在unittest中,测试套件类TestSuite作用与收集测试用例,将用例放在一个容器中。
我们来看一下TestSuite类里面的说明:
"""A test suite is a composite test consisting of a number of TestCases. For use, create an instance of TestSuite, then add test case instances. When all tests have been added, the suite can be passed to a test runner, such as TextTestRunner. It will run the individual test cases in the order in which they were added, aggregating the results. When subclassing, do not forget to call the base class constructor. """
测试套件(test suite)是由一系列的测试用例组成的集合。
使用的时候,创建一个TestSuite示例,然后添加测试用例。当所有的用例被添加后,这个TestSuite实例可以
供test runner执行,比如TextTestRunner。test runner将会按照添加的顺序分别执行每个用例,生成测试结果。
当继承此类时,不要忘了调用父类的构造器。
test suite 添加测试用例的方式有哪些呢?
方式一:添加单个测试用例:addTest()
添加单个测试用例,TestSuite实例调用addTest()方法。
示例:
运行结果如下:
我们可以看到,只有被加载的用例被执行了。
如果我们需要执行多个用例时,addTest()就不适用了,需要调用多次。
方式二:添加多个测试用例:addTests()
添加多条测试用例时,TestSuite实例调用addTests()方法,addTests()方法接受一个列表参数(一个存放了用例的列表)
示例:
if __name__ == ‘__main__‘: suite = unittest.TestSuite() suite.addTests([TestCBab("test_cbab_A"), TestCBab("test_cbab_B")]) runner = unittest.TextTestRunner() runner.run(suite)
if __name__ == ‘__main__‘: suite = unittest.TestSuite() case_list = [TestCBab("test_cbab_A"), TestCBab("test_cbab_B")] suite.addTests(case_list) runner = unittest.TextTestRunner() runner.run(suite)
上面两种写法都可以,要点就是:addTests()方法接受一个列表参数。
执行结果:
我们可以看到,所添加进去的两个用例都被执行了。
tips: 我们来看一个有趣的现象:我把用例添加进去的顺序改变一下,执行结果会怎样呢?
if __name__ == ‘__main__‘: suite = unittest.TestSuite() case_list = [TestCBab("test_cbab_B"), TestCBab("test_cbab_A")] suite.addTests(case_list) runner = unittest.TextTestRunner() runner.run(suite)
执行结果:
我们发现,test suite 调用addTests()执行多个用例时,执行顺序是按照添加进去的顺序(即在用例列表中的顺序)执行的。
原文:https://www.cnblogs.com/ctltest/p/14518652.html