批量运行
- 为什么要批量运行?
- 测试用例数量庞大,需要一次运行,查看所有用例的运行结果。
- 什么是测试套件和测试运行器?
- TestSuite(测试套件)是为了测试执行而分组的测试用例集合。
- TestRunner(测试运行器)用于运行测试套件里所有用例,生成报告。
- 怎么批量运行?
批量运行步骤
-
创建测试套件对象
suite = unittest.TestSuite()
-
加载测试用例到测试套件中
# 支持一次加载一个或多个 # addTest()加载一个测试用例类名("方法名")的格式 suite.addTest(MyTestCase("test_add1")) # addTests([,]) 加载多个测试用例(列表、元组、字典) suite.addTests([MyTestCase("test_add1"),MyTestCase("test_add2")])
-
创建测试运行器对象
""" TextTestRunner(文本测试运行器)是默认的测试运行器,可以用于批量运行测试套件里所有已加载的测试用例,生成文本格式的测试报告结果,显示在控制台里 """ # 创建TextTestRunner对象 runner = unittest.TextTestRunner(verbosity=2) # verbosity是可选参数,默认是1为粗略模式,建议设置为2详细模式
-
使用运行器运行测试套件
runner.run(suite)
测试套件合并
在上面加载测试用例到测试套件中,也可以替换为加载一个或多个测试套件到其它测试套件里
suite2.addTest(suite1) # 加载一个测试套件
suite3.addTests([suite1,suite2]) # 加载多个测试套件
TestLoader(测试加载器)
解决的问题:
- 用测试套件自带的addTest或addTests方法添加测试方法时,如果方法较多,代码冗余,而且每次还需要先创建TestSuite对象实例,比较麻烦
- TestLoader(测试加载器)可以自动创建测试套件对象并且更灵活的选择和加载多个测试用例
# 创建一个测试加载器对象
# unittest.defaultTestLoader是unittest框架准备好的TestLoader对象实例,可以直接使用它来调用TestLoader类的各种方法
# 使用测试加载器对象加载用例
# loadTestsFromTestCase()方法:直接导入一个类,参数是类名
suite = unittest.defaultTestLoader.loadTestsFromTestCase(MyTestCase)
# loadTestsFromName()方法:加载1个测试方法,参数是方法路径(目录/文件/类/方法)
suite = unittest.defaultTestLoader.loadTestsFromName('testcase.testcaseDemo01.MyTestCase.test_add1')
# loadTestsFromNames()方法:加载多个测试方法,参数是方法路径列表(目录/文件/类/方法)
suite = unittest.defaultTestLoader.loadTestsFromNames(['testcase.testcaseDemo01.MyTestCase.test_add1','testcase.testcaseDemo01.MyTestCase.test_add2'])
# loadTestsFromModule()方法:导入模块,参数是模块名(py文件名)
suite = unittest.defaultTestLoader.loadTestsFromModule(testcaseDemo01)
# discover()方法:直接导入特定路径下符合特定命名规则模块里的用例
# 路径支持绝对路径和相对路径
# 加载所有名称以testcase开头的用例到测试套件中
suite = unittest.defaultTestLoader.discover('路径','testcase*.py')
# 注意:最常用的就是discover()方法
文本测试运行器问题
问题:默认使用TextTestRunner(文本测试运行器)只能生成文本格式的测试结果报告,显示在控制台里,结果展示不够直观
解决方案:要构建直观易读的测试报告,可以替换为第三方测试运行器HTMLTestRunner(HTML测试运行器)
HTMLTestRunner(HTML测试运行器)
-
可以使用HTMLTestRunner模块直接生成HTML格式的报告(网页样式,可以在浏览器中查看)
-
HTMLTestRunner不是Python自带模块,也不能通过pip工具进行安装,它是一个独立存在的模块
HTMLTestRunner使用方法
-
导入HTMLTestRunner模块里的同名类,打开html格式的文件、构建HTMLTestRunner对象、运行测试套件
from utils.HTMLTestRunner import HTMLTestRunner whit open("..\\report\\result.html","wb") as result_file: runner = HTMLTestRunner(result_file,verbosity=2,title='测试报告',description="以下是本次测试结果详情:") runner.run(suite)
注意:html报告文件可自动创建,但它所属目录须提前手工准备好
生成HTML格式报告
- 用浏览器打开HTML格式的测试结果报告文件,整个测试套件的运行结果清晰明了。