pytest--学习笔记2

在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可识别的测试结果文件目录路径

执行成功后会打开默认浏览器,呈现测试结果,如下图:

原文地址:https://www.cnblogs.com/panpanda/p/13373075.html