Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

yizhihongxing

1、前言

pytest中常用的测试报告生成方法有两种,一种是通过pytest-html插件来完成,另一种通过Allure框架来实现。

2、pytest-html生成测试报告

(1)pytest-html插件安装

pip install pytest-html

(2)pytest-html的使用

  1. 命令行执行:
    • pytest -s -v xxx.py --html=./report/report.html
  2. main()函数执行:
    • pytest.main(['-vs','--html=./report/report.html'])
  3. 全局配置:
    • pytest.iniaddopts属性后面添加--html=../report/report.html
      Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

(3)报告独立显示

在(2)中的执行方法生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享测试报告,可以通过添加 --self-contained-html参数将css样式合并到html里。
pytest -v -s xxx.py --html=./report/report.html --self-contained-html

更多功能查看官方文档:https://pytest-html.readthedocs.io/en/latest/

3、Allure框架生成测试报告

(1)说明

Allure框架生成的报告相比pytest-html更加完美,推荐使用Allure框架来生成测试报告。
Allure是一个Report框架,是灵活,轻量级,支持多语言的测试报告工具,还可以集成到Jenkins上。

(2)环境准备

步骤1:安装Allure框架

下载地址:https://github.com/allure-framework/allure2/releases

【windows】下:
1)解压下载的框架文件,放到自己指定的目录中
2)把框架的bin目录加入到Path环境变量中
3)验证框架是否安装成功,命令allure --version
【mac】下:
1)确定解压下载的框架文件,放到自己指定的目录中
2)添加环境变量:
查看mac系统版本,我的mac版本是Bigsur,可以通过sudo nano ~/.zshrc进行配置
Apple官方说明:
Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

PATH="/Users/qishuai/allure-2.19.0/bin:${PATH}"
export PATH`

Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

3)验证框架是否安装成功,命令:allure --version,正常出现版本号即为安装成功,但我的出现了如下提示,需要安装jdk
Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

mac安装jdk参考:https://www.jianshu.com/p/199cd1abd570

安装jdk完毕后,再次验证框架是否安装成功
Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

步骤2:下载allure_pytest库
pip install allure-pytest
至此,Allure的环境准备工作就完毕了。

(3)执行测试并生成测试报告

步骤1:执行并指定测试数据存放位置

  1. 命令行执行:
    • 在命令行中增加--alluredir ../report/temp_report_data
    • 可以加上--clean-alluredir清除上一次的测试报告数据
    • eg:pytest -s -v ./xxx.py --alluredir ../report/temp_report_data --clean-alluredir
  2. 全局配置文件:
    • pytest.ini文件的addopts中添加--alluredir ../report/temp_report_data
    • eg:addopts = -s -v --alluredir ../report/temp_report_data
  3. main函数执行:
    • pytest.main(['-v','-s','--allured','../report/temp_report_data'])

注意:不指定的话会自动在当前目录创建一个allure_report目录

步骤2:根据测试数据生成html报告
通过allure框架把json格式的测试数据转换为测试报告
方法1:生成报告文件
allure generate ./report/temp_report_data -o ./report/html --clean
命令解释:

  • allure generate:生成命令
  • ./report/temp_report_data:存放测试数据的目录
  • -o:输出
  • ./report/html:存放生成html报告的路径
  • --clean:清空./report/html路径目录中原来的测试报告

补充:可通过命令创建web服务打开创建的报告文件
allure open -h 127.0.0.1 -p 5555 ./report/html

方法2:直接启动web服务打开报告(不生成报告文件)
在上面方法1中生成html测试报告还要手动打开或输入命令创建web服务打开,我们还可以在生成测试数据之后直接用allure serve .report/temp_report_data命令创建一个web服务,自动在浏览器中打开测试报告
Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)

参考
https://developer.aliyun.com/article/948360
https://www.cnblogs.com/qican/p/14573869.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架) - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Pytest框架 — 07、Pytest的Fixture(部分前后置)(二)

    目录 4、Fixture的相互调用 5、Fixture复用 6、Fixture缓存返回结果 7、Fixture的后置处理 (一)使用yield关键字实现后置 (二)使用addfinalizer关键字实现后置 (三)yield和addfinalizer的区别 4、Fixture的相互调用 示例: import pytest # 第一层fixture @pyte…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 13、Pytest的标记(四)(分组执行)

    目录 1、前言 2、mark的使用 (一)注册自定义标记 (二)在测试用例上标记 (三)执行 3、扩展 (一)在同一个测试用例上使用多个标记 (二)在测试类上使用标记 1、前言 在自动化测试工作中我们有时候并不需要测试所有的测试用例,比如在冒烟测试阶段,我们只需要测试基本功能是否正常就可以了。在pytest中提供了mark标记功能来实现分组执行。 2、mar…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 04、Pytest的断言

    目录 1、前言 2、常用断言 3、预期异常断言 4、优化断言提示 5、自定义失败断言提示 1、前言 Pytest使用python自带关键字assert进行断言,断言内容为一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败。assert + 表达式 2、常用断言 assert xx:判断xx为真 assert not xx…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 09、Pytest的conftest.py文件

    目录 1、conftest.py介绍 2、conftest.py的特点 3、conftest.py文件的使用 4、conftest.py的作用域 1、conftest.py介绍 conftest.py是pytest框架的一种固定写法,把fixture或者自己定义的插件写到这个文件里就会自动去调用。我们前面都是将fixture写到测试用例文件里,在实际工作中更…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 10、Pytest的标记(一)(跳过和预期失败)

    目录 1、前言 2、标记跳过 (一)无条件跳过skip (二)有条件跳过skipif (三)使用pytest.skip(reason)函数标记跳过 (四)跳过整个模块 3、标记预期失败 (一)参数详解 (二)使用pytest.xfail(reason)函数标记预期失败 (三)示例 (四)忽略xfail标识 (五)xfail总结 1、前言 引用自官方文档您可以…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 08、Pytest的Fixture(部分前后置)(三)

    目录 8、Fixture带返回值 9、Fixture实现参数化 10、可靠的Fixture写法 (一)一个不可靠Fixture的例子 (二)修改成可靠Fixture的例子 8、Fixture带返回值 在fixture中我们可以使用yield或者return来返回我们需要的东西,如测试数据,数据库连接对象,文件对象等。 没有后置处理 直接采用return的方式…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 03、Pytest全局配置文件

    目录 1、Pytest的全局配置文件 (1)说明 (2)示例 (3)常用配置项 (4)执行 1、Pytest的全局配置文件 (1)说明 我们之前用命令行或主函数启动测试的时候会增加一些参数来实现所需功能,很多测试用例执行都需要这些参数,所以在企业中我们会通过全局配置文件的方式来管理这些参数。注意: 全局配置文件的名称是固定的,可以为pytest.ini,to…

    Python开发 2023年4月2日
    00
  • Pytest框架 — 11、Pytest的标记(二)(parametrize参数化)

    目录 1、标记实现参数化 示例1:单个参数 示例2:多个参数 示例3:多个参数化(笛卡尔积) 示例4:ids参数给用例起别名 示例5:使用indirect处理参数值 示例6:标记数据 1、标记实现参数化 通过@pytest.mark.parametrize(argnames, argvalues, indirect=False, ids=None, scop…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部