自动化测试selenium + chrome + unittest + HTMLTestRunner,生成测试报告(二)测试套件

tech2026-08-21  1

1. 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 2. 一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么进行组织,总不能一个个文件执行吧?

要解决上面两个问题,我们就要用到测试套件(TestSuite)了

# 脚本文件:baidu.py from selenium import webdriver import unittest driver = webdriver.Chrome() driver.get("https://www.baidu.com/") class CmsLoginTest(unittest.TestCase): def input(self): global driver # 百度输入框输入搜多内容 driver.find_element_by_id("kw").send_keys("unittest的使用") def client(self): global driver driver.find_element_by_id("su").click() # 点击搜索 运行文件:run.py import unittest import time from channel import baidu from HTMLTestRunnerCN import HTMLTestRunner testsuite = unittest.TestSuite() # 如果多个测试用例就需要,添加多个addTest testsuite.addTest(baidu.CmsLoginTest('input')) testsuite.addTest(baidu.CmsLoginTest('client')) now = time.strftime("%Y-%m-%d") filename = now + "baidu_TestResult.html" with open(filename, 'wb') as fp: runner = HTMLTestRunner(stream=fp, title='WEB主站测试报告', description='用例执行情况') runner.run(testsuite)

通过以上代码,如果多个测试用例就需要,添加多个addTest,有点麻烦; 我们可以把要执行的测试用例用个列表来管理,然后再把这个列表添加到测试套件中,如下代码:

运行文件run.py import unittest import time from channel import baidu from HTMLTestRunnerCN import HTMLTestRunner testsuite = unittest.TestSuite() teat_cases = [baidu.CmsLoginTest('input'),baidu.CmsLoginTest('client')] testsuite.addTests(teat_cases) now = time.strftime("%Y-%m-%d") filename = now + "baidu_TestResult.html" with open(filename, 'wb') as fp: runner = HTMLTestRunner(stream=fp, title='WEB主站测试报告', description='用例执行情况') runner.run(testsuite)

注意:addTests是添加的列表,addTest是添加的单个用例

最新回复(0)