Python unittest - ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest

I have a very simple setup using unittest and I get an error that I don’t understand.

# mytestcase.py import unittest class MyTestCase(unittest.TestCase): def test_one(self): self.assertTrue(True) def test_two(self): self.assertTrue(False) def initialize(): return MyTestCase() if __name__ == '__main__': unittest.main() 

If I execute the above file, I get the following result, which I expect and understand:

 > python mytestcase.py .F ====================================================================== FAIL: test_two (__main__.MyTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "mytestcase.py", line 7, in test_two self.assertTrue(False) AssertionError: False is not true ---------------------------------------------------------------------- Ran 2 tests in 0.000s FAILED (failures=1) 

But I want to run these tests in a different way, from my_test_manager.py :

 # my_test_manager.py import mytestcase test_case = mytestcase.initialize() test_suite = unittest.TestLoader().loadTestsFromTestCase(test_case) test_suite_result = unittest.TestResult() test_suite.run(test_suite_result) for err in test_suite_result.errors: print err for fail in test_suite_result.failures: print fail 

But if I try to run this file, it will work as follows:

 > python my_test_manager.py Traceback (most recent call last): File "my_test_manager.py", line 3, in <module> test_case = mytestcase.initialize() File "/Users/Jon/dev/test-tools/practice/mytestcase.py", line 11, in initialize return MyTestCase() File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 191, in __init__ (self.__class__, methodName)) ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest 
+4
source share
2 answers

You do not need to create an instance; return the class MyTestCase:

 def initialize(): return MyTestCase 
+4
source

Thanks, it works, as you suggested.

 'from mytestcase import MyTestCase import unittest test_suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase) test_suite_result = unittest.TestResult() test_suite.run(test_suite_result) for err in test_suite_result.errors: print("hello")enter code here for fail in test_suite_result.failures: print("no hello")' 
0
source

All Articles