如果不先将测试用例放到测试套件中,就不可能直接运行测试用例吗?

2024-09-28 03:24:23 发布

您现在位置:Python中文网/ 问答频道 /正文

unittest不能直接运行测试用例而不首先将它们放入测试套件,这是真的吗?我在某处看到了它,但忘记了在哪里看到的,以及它是指python最不成文的模块还是Java的JUnit。你知道吗

Python的unittest提供了两种隐式创建和运行测试用例的方法,但我不确定它们是否在内部使用测试套件。例如,给定一个测试用例类:

# test_module.py

import unittest
class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        self.widget = Widget('The widget')
    def tearDown(self):
        self.widget.dispose()
        self.widget = None
    def test_default_size(self):
        self.assertEqual(self.widget.size(), (50,50),'incorrect default size')
    def test_resize(self):
        self.widget.resize(100,150)
        self.assertEqual(self.widget.size(), (100,150),'wrong size after resize')
    def test_somethingelse(self):
        ...

我可以通过测试套件显式地选择一些要创建和运行的测试用例

widgetTestSuite = unittest.TestSuite()
widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
widgetTestSuite.addTest(WidgetTestCase('test_resize'))
unittest.TextTestRunner(verbosity=2).run(suite)

或者,我也可以通过

python3 -m unittest test_module.py

或添加到test_module.py

if __name__ == "__main__":
    unittest.main()

然后呢

python3 test_module.py

我想知道这两个隐式方法是否以类似于显式方法的方式在内部使用测试套件?如果不是,他们是否创建测试用例(即实例化测试用例类),如果是,他们如何运行测试用例?你知道吗


Tags: 方法pytestselfdefaultsize套件def

热门问题