我有一个非常简单的设置,使用unittest,我收到一个我不明白的错误。
# 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()
如果我执行上述文件,我会得到以下结果,我期望并理解:
> 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)
但我想以另一种方式运行这些测试,来自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
但如果我尝试运行此文件,它会崩溃如下:
> 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
答案 0 :(得分:4)
您不需要创建实例;返回MyTestCase类本身:
def initialize():
return MyTestCase
答案 1 :(得分:0)
感谢您的建议。
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")
for fail in test_suite_result.failures:
print("no hello")