首页 前端知识 python接口测试:2.8 Pytest之pytest-html报告生成

python接口测试:2.8 Pytest之pytest-html报告生成

2025-03-02 13:03:37 前端知识 前端哥 916 81 我要收藏

前面我们讲了unittest框架如何实现报告生成,那么在Pytest中如何实现报告生成呢?在pytest中实现报告生成我们可以使用以下四种方法,如:resultlog文件、JunitXML文件、Html文件、Allure报告等。我们将重点讲解Html和Allure两种报告的生成方式。

python接口测试:2.8 Pytest之pytest-html报告生成_测试用例

——————————————

❶ResultLog、JunitXML文件生成

——————————————

直接使用pytest运行对应的测试用例模块文件,在该文件后面添加两个参数--result-log=log需要存放的路径  --junit-xml=xml所需要保存的路径,具体实现如下:

python接口测试:2.8 Pytest之pytest-html报告生成_测试用例_02

那么就会在F盘的test目录下会生成两个文件

python接口测试:2.8 Pytest之pytest-html报告生成_测试用例_03

打开这两个文件你会发现实际不是很好分析结果,所以这两种方式大家只需要知道有这个参数即可,一般很少使用。

——————————————

❷Pytest-html模块基本使用

——————————————

如果想要生成与unittest框架一样的html报告的话,则需要引用第三方模块pytest-html模块。

安装,直接通过pycharm中settings进行安装或者pip install pytest-html。

再次强调,注意你们使用的环境,有些时候装了两套python环境,你们上面的两种安装方式不同则会处于不同的环境中被安装。

安装完成,直接使用命令pytest  --html=需要保存报告所在路径   需要执行的测试用例模块文件即可生成html报告了。

在pycharm中具体设置如下:

python接口测试:2.8 Pytest之pytest-html报告生成_测试用例_04

dos中执行方式:

python接口测试:2.8 Pytest之pytest-html报告生成_自定义_05

那么在F盘中会生成如下图所示:

python接口测试:2.8 Pytest之pytest-html报告生成_测试用例_06

打开test.html文件内容如下图:

python接口测试:2.8 Pytest之pytest-html报告生成_自定义_07

从文件夹中发现会生成两个文件,一个是文件夹里面存放的是css样式的,一个是html文件,但是如果我只想生成一个html文件的话,如何实现?

可以添加参数--self-contained-html即可。例如:如下操作

python接口测试:2.8 Pytest之pytest-html报告生成_自定义_08

最后你在F盘中会发现只有一个文件test1.html不会生成一个assets文件夹了,因为此时已经将css写入到html页面中去了。

当然,如果你不想用它自带的css样式的话,可以自己写相关的css样式,然后应用到报告中即可,添加参数--css自定义的css样式文件所在路径。

——————————————

Pytest-html报告增强

——————————————

大家看到上面的报告应该有所发现我的报告跟你们是否有所不同呢?

因为我实现了报告新增三列去除了一列,分别是Time列、Y OR N列、Description列以及去除了link列。

那么是如何实现的呢?实际大家只是分析和查看官网可以发现,具体提供了操作方式:https://github.com/pytest-dev/pytest-html

下面是官网的部分描述截图

python接口测试:2.8 Pytest之pytest-html报告生成_自定义_09

我们来分析下上面代码吧。

首先第一个函数,是实现表格的表头设计,设计了两列,分别是Description和Time。并且Time列实现了排序操作。第二个函数实现是对应表头每行值的定义,实际description指的就是在程序中的doc注释。而Time的值使用的utcnow的值,会发现与当前自己的系统时间相差八小时,因为我们处于的是东八区,utc获取的是世界协调时间。所以我们可以自己通过localtime以及strftime方法完成获取当前计算机时间并自定义格式。

具体实现的代码如下:

from datetime import datetime
from py.xml import html
import pytest
import time
#声明报告表格的表头定义
def pytest_html_results_table_header(cells):
#insert方法的第一个参数表示是插入到表格的是第几列,第二个参数是表头名
cells.insert(2, html.th('Description'))
cells.insert(1, html.th('Time', class_='sortable time', col='time'))
cells.insert(3, html.th('Y OR N'))
cells.pop()
#实现对应表头的行的值的操作,description、实际就是我们声明的每个方法对应docstring值
def pytest_html_results_table_row(report, cells):
cells.insert(2, html.td(report.description))
#下面我们自定义格式时间
cells.insert(1, html.td(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()), class_='col-time'))
cells.insert(3,html.td("Y"))
cells.pop()
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
#__doc__属性是系统内置的,前面我们讲过,用于获取类。方法、函数的doc注释
report.description = str(item.function.__doc__)
复制
转载请注明出处或者链接地址:https://www.qianduange.cn//article/22292.html
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

如何修改电脑mac地址?

2025-03-03 13:03:33

C 数组:深入解析与应用

2025-03-03 13:03:28

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!