在前面一章中示例了如何编写一个简单的测试,但有两个问题:
我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢?
一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么进行组织,总不能一个个文件执行吧?
要解决上面两个问题,我们就要用到测试套件(TestSuite)了
if __name__ =='__main__':
suite=unittest.TestSuite()#创建容器
suite.addTest(TestMethod('测试用例test_01'))#容器中添加用例
unittest.TextTestRunner.run(suite)#用例执行
假如我有两个系统的登录需要测试,测试用例分别放在两个文件中(cmslogin.py,smelogin.py),现在我需要把这两个文件中的用例添加到一个测试套件中来执行,为此我们要重新建立一个叫run_all.py的文件
import unittestfromcmsloginimport CmsLoginTestfromsmeloginimport SmeLoginTestif__name__=="__main__":
# 构造测试套件suite = unittest.TestSuite()
test_cases = [CmsLoginTest("test_login1"),CmsLoginTest("test_login2"),CmsLoginTest("test_login4"),
CmsLoginTest("test_login3"),SmeLoginTest("test_login1"),SmeLoginTest("test_login2")]
suite.addTests(test_cases)
# 执行测试runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
还可以用addTests + TestLoader方法来添加用例,但是这种方法是无法对case进行排序的
import unittestfromcmsloginimport CmsLoginTestfromsmeloginimport SmeLoginTestif__name__=="__main__":
# 构造测试套件suite = unittest.TestSuite()
# 第一种方法:传入'模块名.TestCase名'suite.addTests(unittest.TestLoader().loadTestsFromName('cmslogin.CmsLoginTest'))
suite.addTests(unittest.TestLoader().loadTestsFromName('smelogin.SmeLoginTest'))
# 这里还可以把'模块名.TestCase名'放到一个列表中suite.addTests(unittest.TestLoader().loadTestsFromNames(['cmslogin.CmsLoginTest','smelogin.SmeLoginTest']))
# 第二种方法:传入TestCase suite.addTests(unittest.TestLoader().loadTestsFromTestCase(CmsLoginTest))
# 执行测试runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
原文转载自https://www.cnblogs.com/eastonliu/p/9145255.html