一、Pytest--参数化
在测试用例前面加上@pytest.mark.parametrize('参数名','列表数据')
参数名: 用来接收每一项数据,作为测试用例的参数
列表数据: 一组测试数据
示例1:
@pytest.mark.parametrize("data",LD.phone_data)
deftest_login_0_user_wrongFormat(self,data,access_web):
#步骤:输入用户名、密码、点击 access_web[1].login(data['user'],data['passwd']) assert access_web[1].get_errorMsg_form_loginArea()
示例2:
@pytest.mark.parametrize("user,pwd",[("18221124104",111111),("18200000000",111111)])
二、Pytest--失败重跑
1.Pytest提供了失败重试机制:
插件名称:rerunfailures
安装方法:pip install pytest-rerunfailures
2.使用方式:
命令行参数形式:
命令:pytest --reruns 重试次数
比如:pytest --reruns 2 表示:运行失败的用例可以重新运行2次
命令:pytest --reruns 重试次数 --reruns-delay 次数之间的延时设置(单位:秒)
比如:pytest --reruns 2 --reruns-delay 5 表示失败的用例可以重新运行2次,第一次和第二次的间隔时间为5秒钟
三、Pytest--重复运行、标记超时
1.Pytest提供了重复运行、标记超时机制:
插件名称:repeat(重复运行)、timeout(标记超时)
安装方法:pip install pytest-repeat、pip install pytest-timeout
2.使用方式:
命令行参数形式:
命令:pytest --count= 重试次数
比如:pytest demo.py --count=5 表示:运行用例重复运行5次
或者直接在用例前面加上@pytest.mark.repeat(5)
命令:pytest --timeout= 超时时间(单位:秒)
比如:pytest demo.py --timeout=5 表示:运行用例重复运行5秒
或者直接在用例前面加上@pytest.mark.timeout(5)
四、Pytest--生成报告
pytest可以生成多种样式的结果: (路径均为相对路径)
1.生成Html 测试报告 => pytest demo --html=report.html(安装pytest-html)
如:命令: pytest test_api.py -s --html=../test_result/report.html
2.生成 ResultLog 格式的测试报告,命令: --resultlog=report/log.txt
3.生成Allure报告命令:
pytest test_hooSwap_api.py -s -v --alluredir=../test_result/Allure/data # 产生数据源
allure generate ../test_result/Allure/data -o ../test_result/Allure/html/ --clean # 产生报告
allure serve ../test_result/Allure/data # 直接打开测试报告
五、Pytest--常用命令
-s 指定打印的详细信息,打印print()中输出的调试信息等 => pytest a.py -s
-v 打印的信息有passed和failed标志,并且打印出来的信息包含路径 => pytest test_se.py -s -v
-m 执行特定的标签名运行(标签需要在pytest.ini中进行注册) => pytest -m
-k 执行用例包含“关键字”的用例 => pytest -k
-q 简化控制台的输出 => pytest -q
运行模块中的指定用例 => pytest pytest_test.py::test_begin
运行模块中类下面的指定用例 => pytest pytest_test.py::TestCase::test_01_sum