来自文档此示例
import unittest
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget('The widget')
def tearDown(self):
self.widget.dispose()
def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase('test_default_widget_size'))
suite.addTest(WidgetTestCase('test_widget_resize'))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
不显示任何错误
pytest -vv --log-level=INFO mytest.py
但它也收集了 0 件物品。
我如何正确使用这种方式来动态生成详细测试结果列表,以便稍后将它们包含在报告中?
仍然不确定文档想要通过未记录的 Widget 测试来展示什么。
但是,如果有人提出动态生成测试结果列表的问题,则没有单元测试解决方案。
我找到的唯一解决方案是在运行时编译要测试的方法列表。
import unittest
string_class = "class IterationTestCase(unittest.TestCase):"
testnames = ["test_one","test_two"]
string_tests = ""
for testname in testnames:
string_one = f"""
def {testname}(self):
print(self._testMethodName)
self.assertTrue(True)
"""
string_tests = string_tests + string_one
string_tests = string_tests + "\n"
string_unittest = "unittest.main()"
string_unittest = """
unittest.TextTestRunner(verbosity=2)
unittest.main()
"""
string_test = string_class + string_tests + string_unittest
compiled_code = compile(string_test, "<string>", "exec")
exec(compiled_code)
不确定我最终是否会使用它。