首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 测试框架 pytest —— 生成测试报告

Python 测试框架 pytest —— 生成测试报告

作者头像
为为为什么
发布2022-08-10 14:21:37
发布2022-08-10 14:21:37
3.6K0
举报
文章被收录于专栏:又见苍岚又见苍岚

Pytest 执行过测试任务后我们需要查看整体测试情况,本文记录使用 pytest 生成测试报告的几种方法。

简介

  • Pytest 生成测试报告有几种方法,本文以 mtutils 库中的测试代码为例,分别尝试几种测试报告的使用

ResultLog

  • pytest 自带测试报告输出功能
  • 该功能在 pytest 6.1 以后的版本中被删除
使用方法
  • 在 pytest 命令中加入参数
代码语言:javascript
复制
--resultlog = path-to-log.txt

示例
代码语言:javascript
复制
pytest --resultlog=./log.txt test-dir

pytest-HTML

  • pytest-HTML 是一个 python 包,用于生成 pytest 测试结果的HTML报告
安装测试包
代码语言:javascript
复制
pip3 install pytest-html

使用方法
  • 在 pytest 命令中加入参数
代码语言:javascript
复制
--html=report.html

示例
代码语言:javascript
复制
pytest .\tests --html=report.html

  • 在浏览器打开该文件

JunitXML

  • 可以选择生成 XML 文件显示日志
使用方法
  • 在 pytest 命令中加入参数
代码语言:javascript
复制
--junitxml=./log.xml 

示例
代码语言:javascript
复制
pytest .\tests --junitxml=./log.xml 

  • 得到 xml 文件
代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="4" time="1.132" timestamp="2022-06-16T10:48:47.656215" hostname="VVD"><testcase classname="tests.test_utils.test_utils" name="test_get_list_from_list" time="0.001" /><testcase classname="tests.test_utils.test_utils" name="test_segment_intersection" time="0.001" /><testcase classname="tests.test_utils.test_utils" name="test_concat_generator" time="0.002" /><testcase classname="tests.test_utils.test_utils" name="test_get_mac_address" time="0.002" /></testsuite></testsuites>

  • 在 wps 中打开

allure

配置 java 环境
代码语言:javascript
复制
java --version

返回java 版本表示 java 环境配置成功

代码语言:javascript
复制
C:\Users\Administrator>java --version
java 18.0.1.1 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)

下载 allure
代码语言:javascript
复制
allure --version

正常返回 allure 版本表明配置成功

代码语言:javascript
复制
C:\Users\Administrator>allure --version
2.18.1

安装 allure
代码语言:javascript
复制
pip install allure-pytest 

使用方法
  • 生成 allure 报告内容,在 pytest 命令中加入参数
代码语言:javascript
复制
--alluredir=reports-dir

  • 生成报告内容后,用 allure 命令解析并查看报告
代码语言:javascript
复制
allure serve reports-dir

示例
  • 生成 allure 测试报告到 reports/allure 文件夹
代码语言:javascript
复制
pytest .\tests\  --alluredir=reports/allure

  • 显示 allure 报告
代码语言:javascript
复制
allure serve reports\allure

  • 报告效果

Coverage

  • Coverage 包可以辅助 pytest 查看代码运行级别的覆盖率并生成直观的 html 测试报告
  • pytest-cov 是pytest的一个插件,其本质是引用 python coverage 库用来统计代码覆盖率
  • 新版 pytest 默认已经自带,手动安装
代码语言:javascript
复制
pip install pytest-cover

使用方法
  • 在 pytest 命令中加入 --cov=.\code\ 参数,用于统计制定文件夹中的代码运行覆盖率,该参数指向的是被测试的代码,不是测试代码
  • 在 pytest 命令中加入 --cov-report=html 参数输出 html 报告
示例
  • mtutils 库中的测试代码为例
代码语言:javascript
复制
pytest --cov=.\lib\ .\tests\ --cov-report=html

  • 运行完成后生成了 htmlcov 文件夹,其中包含了覆盖率的 html 网页报告
  • 报告效果
  • 点击指定文件可以查看代码运行覆盖情况
  • 红线表明未被覆盖到的代码

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月16日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 简介
  • ResultLog
    • 使用方法
    • 示例
  • pytest-HTML
    • 安装测试包
    • 使用方法
    • 示例
  • JunitXML
    • 使用方法
    • 示例
  • allure
    • 配置 java 环境
    • 下载 allure
    • 安装 allure 包
    • 使用方法
    • 示例
  • Coverage
    • 使用方法
    • 示例
  • 参考资料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档