如果不先将它们放入测试套件就无法直接运行测试用例吗?

时间:2019-04-10 22:29:39

标签: python python-unittest

是真的,单元测试不能在没有先将它们放入测试套件的情况下直接运行测试用例吗?我在某个地方看到了它,但是忘记了在哪里看到它,以及它是指python的unnittest模块还是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

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

谢谢。

0 个答案:

没有答案