diff --git a/src/test/utils/CordTestConfig.py b/src/test/utils/CordTestConfig.py
index 0e369d9..fc4aafe 100644
--- a/src/test/utils/CordTestConfig.py
+++ b/src/test/utils/CordTestConfig.py
@@ -5,25 +5,21 @@
 from nose.tools import assert_not_equal
 
 def setup_module(module):
-    class_found = None
+    class_test = None
     for name, obj in inspect.getmembers(module):
         if inspect.isclass(obj) and issubclass(obj, unittest.TestCase):
             if obj.__name__.endswith('exchange'):
-                class_found = obj
+                class_test = obj
                 break
             else:
-                class_found = obj
+                class_test = obj
 
-    assert_not_equal(class_found, None)
-    try:
-        module_name = module.__name__.split('.')[-1]
-    except:
-        module_name = module.__name__
-
+    assert_not_equal(class_test, None)
+    module_name = module.__name__.split('.')[-1]
     cfg = '{}.json'.format(module_name)
     module_config = os.path.join(os.path.dirname(module.__file__), cfg)
     if os.access(module_config, os.F_OK):
         with open(module_config) as f:
             json_data = json.load(f)
             for k, v in json_data.iteritems():
-                setattr(class_found, k, v)
+                setattr(class_test, k, v)
