pytest自动化
主流pytest工具。 Python语言下:unittest框架,pytest工具。 Java语言下:Junit框架,testng工具
pytest
命名规则:
测试用例:
class TestPytest(): """测试Pytest类""" def test_001(self): """test_001""" print("test_001") assert 1 == 1 def test_002(self): """test_002""" print("test_002") assert 1 < 2
执行参数:
-v 显示详细的测试信息:pytest.main(['-v'])
,详细展示每条用例方法名称、结果、进度等信息
-s 显示用例中打印信息:pytest.main(['-s'])
-q 安静的输出,只显示运行的结果信息:pytest.main(['-q', '../Testcase/test_pytest_demo.py'])
- -n 多线程执行测试用例:pytest.main(['-vs', '../Testcase/test_pytest_demo.py','-n2'])
,n后面的数字为线程数,使用前需要安装pytest-xdist插件
-m 执行指定标记的用例:pytest.main(['-m markName'])
,自定义的标记名称可在pytest.ini文件中进行注册才可以使用
–lf 重跑上次失败的用例:pytest.main(['-v', '../Testcase/test_pytest_demo.py', '--lf'])
,如果上次没有失败用例,则执行全部
–reruns=N 自动重跑失败用例N次:pytest.main(['-q', '--reruns=1', '../Testcase/test_pytest_demo.py'])
断言:
assert a in b
:断言a包含bassert a == b
:断言a等于bassert 1 < 2
:断言1小于2
原文链接https://blog.csdn.net/Wenhua_1/article/details/127191189
--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··--··
unittest稍微了解一下吧~
1. 重要插件:测试用例类 testcases,测试套件 testsuits,测试夹具 testfixtures,测试类加载器 testLoader,测试运行器 testrunner
2. 规则:
测试文件先导入unittest包 import unittest
测试类继承unittest.TestCase
测试方法以test开头,test01,test11,命名规则0开头
3. 断言:
assertTure(a) 判断a是否为真 assertEqual(a,b) 判断a和b是否一致 assertln(a,b) 判断a是否在b里面 assertNotEqual(a,b) 判断a!= b assertNotIn(a,b) 判断a是否在b里面 assertFalse(a) 判断a是否为假
4. 测试报告:htmlesrunner 导包,下载py3支持包,导入即可使用。没有失败重跑
5. 数据驱动:@ddt
6. 用例分类执行:默认执行所有,可通过testsuite执行部分用例,或者用-k参数执行
用例实战:需求规格说明书:随机输入三个正整数,判断是否构成三角形,以及构成的什么边的三角形。(暂且不考虑正整数的范围)
测试需求:如果不能构成三角行,输出“不能构成三角形”;如果输入非法,提示“非法输入”;普通三角形用1表示,等腰三角形用2表示,等边三角形用3表示。
# 测试模块,负责三角模块的测试 # 导入unittest测试单元 import xlrd from xlutils import copy # 在写入excel表的时候,需要先拷贝再写入 import unittest # 导入数据驱动 from ddt import ddt, data, unpack # 导入待测试的测试用例数据的模块 from day9.data import TriangleData # 导入需要测试的模块 from day9.function import triangle @ddt # 声明使用ddt框架 class TestTriangle(unittest.TestCase): # 获取TriangleData模块下的TriangleData类,并通过TriangleData获取测试用例数据 triangleData = TriangleData.TriangleData().triangleData # print(triangleData) @data(*triangleData) # 传入数据 *表示解析数据格式,解析成列表的格式 @unpack # 解包的数据类型为:列表、元组、字典 def test01_isTriangle(self, row, a, b, c, except_res): t = triangle.Triangle() # 执行测试用例,真实结果 real_res = t.isTriangle(a, b, c) # 将执行的结果写入工作簿 write_isTriangle_result(row, real_res, except_res) # 断言进行预期结果与真实结果的判断 self.assertEqual(except_res, real_res) # 注意,先传入预期结果,在传入实际结果 def write_isTriangle_result(row, real_res, except_res): # 将实际结果和预期结果 is_pass = '否' if except_res == real_res: is_pass = '是' # 将处理的结果写入cal_test表中 # 打开源文件,并保留源文件的数据格式 wb = xlrd.open_workbook(filename=r'D:\pyhton-product\day9\testCases\TriangleTestCase.xlsx', encoding_override='utf-8') # 复制原始的工作簿 c_wb = copy.copy(wb) # 获取工作表 c_sheet = c_wb.get_sheet(0) # 写入数据 c_sheet.write(row, 5, real_res) c_sheet.write(row, 6, is_pass) # 保存复制下来的表格 c_wb.save(r'D:\pyhton-product\day9\testCases\TriangleTestCase.xlsx') # 这一部分用于执行测试用例和生成测试报告 # if __name__ == '__main__': # unittest.main()
等自动化熟悉起来,看Java框架
一手可乐,一手学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类