Unittest
1.测试框架的作用
- 标记和筛选用例
- 创建测试数据
- 执行用例
- 判断结果
- 清理测试数据
- 生成测试报告
- 对接外部工具
2.
执行测试用例的3个方式
1.脚本方式执行 2.模块方式执行 3.用例执行顺序
import unittest
class Test(unittest.TestCase):
def test_Happy(self):
self.assertTrue(1)
def test_Apple(self):
pass
#执行方法1-脚本方式
if __name__ == '__main__':
unittest.main()
#执行方式2-命令执行 python -m unittest test.py
3.测试结果
. 代表用例测试通过
F 用例测试失败
E 用例执行出错
s 用例跳过执行
4.TestFixture : 在每个测试方法执行前后自动执行的指令
seuUp/tearDown:每个测试方法执行前后,比如:浏览器启动4次
setUpClass/tearDownClass:每个测试类执行前后,比如:浏览器启动2次 @classmethod ....cls
setUpModule/tearDownModule:每个测试模块执行前后,比如:浏览器启动1次
5.测试执行顺序筛选
if _ _name_ _=='_ _main_ _':
unittest.main(defaultTest=["TestCase.test_01","TestCase.test_02"])
6.
if _ _name_ _=='_ _main_ _':
unittest.main()
#1.实例化testLoader,收集测试用例,并且生成 **测试套件**
#2.实例化test Runner,运行测试用例,并且生成结果
#3.判断,是否结束程序
等价于如下(unittest.main()原理如下
if __name__ == '__main__':
suite=unittest.TestSuite() #测试套件 也就是testloader执行结果
suite.addTest(TestCase("test_Happy"))
runner=unittest.TextTestRunner(verbosity=2) #实例化test Runner
res=runner.run(suite)
print(res)
执行顺序
1.默认顺序:ASCII
2.修改顺序
2.1 手动添加用例和套件
2.2 修改模的顺序:重写testloader的sort方法
if __name=='__main__':
def sort(x,y):
return len(y)-len(x)
unittest.defaultTestLoader.sortTestMethodUsing=sort #使用新的排序规则 替换旧的
unittest.main()
2.3 指定测试方法的前缀
3.生成网页版测试报告
3.1 文件名test开头,框架自动收集
3.2 文件名不是test开头,把文件名传递给unittest
if __main__=='__main__':
unittest.defaultTestLoader.testMethodPrefix="t_" #新的前缀
unittest.main()
4.安装第三方包
pip install html -testRunner
4.1指定 HTMLTestRunner
if __main__=='__main__;"
from HtmlTestRunner import HTMLTestRunner
runner_argv={
"output":"./test".
"combine_reports":True,
}
# 如果把字典作为关键字参数船体,需要**解包
unittest.main(testRunner=HTMLTestRunner(**runner_argv))
HTMLTestRunner参数
1.output="./reports/" 测试报告存放路径
2.report_title=None 测试报告标题
3.combine_reports=False 合并报告到同一个文件
4.open_in_browser=False 自动打开报告
5.template=None自动逸模板位置
持续继承 docker
CI runner
接口一般是异步请求
ddt:数据驱动测试
ddt=数据读取+动态生成测试用例
pip install ddt
python装饰器 @ddt.ddt()
import unittest
import requests
import openpyxl
def get_data_by_excel(path):
sheet=openpyxl.load_workbook("path").active #打开excel
return sheet.values #读取execl里的数值
使用Green运行unittest pip install green pytest