文档中的unittest示例不适用于动态列表

问题描述 投票:0回答:1

来自文档此示例

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 件物品。

我如何正确使用这种方式来动态生成详细测试结果列表,以便稍后将它们包含在报告中?

python python-unittest
1个回答
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)

不确定我最终是否会使用它。

© www.soinside.com 2019 - 2024. All rights reserved.