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是添加的单个用例