在pytest--学习笔记1中记录了pytest的基本用法(如何写用例、定义前置后置函数、共享前置后置函数以及pytest的参数化)以及与unittest的区别。
这次则主要是记录pytest实现筛选用例功能、pytest的用例失败重运行机制、以及pytest集成优美的测试报告allure的学习过程。
一、pytest实现筛选用例执行
1. pytest是如何筛选用例的?
===> 通过给用例打标记的方式来筛选
2. pytest如何给用例打标记?
===> 1⃣️ 向pytest注册标记
首先:在项目目录下新建文件pytest.ini ⚠️ 文件名、后缀是固定的!
其次:在pytest.ini文件中,按照如下格式来添加标记名:
[pytest]
markers =
标签名1: 标签说明,可以不写,写的话,只支持英文,不支持中文
标签名2: ...
标签名n: ...
一行一个标签名
pytest.ini [pytest] markers = smoke: smoke cases regression: regression cases
===> 2⃣️ 通过装饰器的方式给用例打上已注册的标记
即 在测试用例方法上添加@pytest.mark.已注册标记名,可以添加多个标记,如果是给测试类打标记,则其中的测试用例方法均带有该标记
@pytest.mark.smoke @pytest.mark.demo def test_case_1(): xxx xxx
3. pytest筛选用例后,如何执行这些被筛选出的用例?
===> 1⃣️ 命令行执行:pytest -m "标记名"
===> 2⃣️ main函数执行:main(["-m", "标记名"])
二、pytest的用例失败重运行机制
1. 为什么要使用失败重运行机制?
===> 由于UI test执行成功率受影响原因较多,所以在该用例执行失败时,立即启动失败重运行机制,在所设置重运行次数内只要只有一次执行成功,那么这条用例被执行结果为passed,反之如果均失败,则该用例结果为failed
2. pytest重运行机制如何实现?
===> 插件rerunfailures
===> 安装方法:pip install pytest-rerunfailures
3. 如何设置重运行次数以及重运行间隔时间?
===> main()函数参数,--reruns 2 表示重运行两次;--reruns-delay 表示每次重运行间隔为5秒钟
三、pytest集成优美的测试报告allure
前言:pytest本身是可以生成多种样式的测试报告(只是不那么美观) ===> 需要安装pytest-html插件
方法:pip install pytest-html
1. 生成JunitXML格式的测试报告,命令:--junitxml=path
2. 生成result log格式的测试报告,命令:--resultlog=report/log.txt
3. 生成html格式的测试报告,命令:--html=path(如:report/xxx.html)此处为相对路径,相对pytest命令执行的根路径的路径,举例表示:在report目录下生成xxx.html测试报告
我使用的是第三种方式,直接在main函数中添加--html参数即可,如:main(["--html=Outputs/report/pytest_report.html"])
当然有了allure,就弃用上述报告啦~但是,allure这么优秀,它不支持unittest哦!!!
先提供allure的官方文档地址:https://docs.qameta.io/allure/
⚠️⚠️⚠️一定要参考官方文档!!!因为官方文档上啥都有!!!是最权威的操作手册!!!
要使用这么优秀的测试报告框架,首先肯定要安装上才能使用。
1. 如何安装allure?
===> allure都是通过命令行来安装的,各个平台安装命令不一样,建议查看官方文档,官方文档啥都有,我只是搬运工。
由于我的操作系统是mac os x 我本身也安装了homebrew,所以我采取的安装方式是:brew install allure
安装成功后,可以通过命令allure查看是否安装成功
emm,来说一下官方文档提供的手动安装操作步骤吧~~
===> 1⃣️ 下载压缩包.zip,各个平台通用。附上下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 官方给的地址访问有点问题,我自己找的这个具体的下载地址
===> 2⃣️ 解压压缩包
===> 3⃣️ 进入解压后的目录的bin目录下
===> 4⃣️ mac或Linux用户直接点击allure就行来,Windows点击运行allure.bat
===> 5⃣️ 将allure配置到系统环境变量中
环境变量的配置我就不细说啦~附上我Windows配置的截图以及配置后在cmd中运行allure结果:
2. allure安装好之后,该怎么与pytest产生关联呢?
===> 1⃣️ 插件allure-pytest
===> 安装方法:pip install allure-pytest
===> 2⃣️ 执行命令:pytest --alluredir=Outputs/report 让pytest生成allure能够识别的测试结果文件并将结果文件放在Outputs/report目录下,注意Outputs/report这个路径也是一个相对路径,只需要指定目录,不需要指定报告名和后缀
main函数中:main(["--alluredir=Outputs/report"])
3. 步骤2是让pytest生成allure可识别的结果文件,那么如何让allure呈现测试报告?
===> 执行命令:allure serve 步骤2中生成的allure可识别的测试结果文件目录路径
执行成功后会打开默认浏览器,呈现测试结果,如下图: