简介

pytest-HTML 是一个插件,pytest 用于生成测试结果的 HTML 报告。

生成报告

先简单写个例子生成报告看看。

生成报告效果如下

此次主要是针对 Environment 和 Results 两部分进行修改配置,让列表部分展示的数据更清晰,增加和删减列数据。

修改报告

这里先介绍下 conftest.py 文件,主要作用如下:

  • 1 .存放你的 fixture 函数
  • 2.在里面写自己的本地插件

比如公共用例前置和后置部分,数据清理都可以放在该文件里执行。

修改 Environment

主要分为增加配置或删除配置:

def pytest_configure(config):
    # 添加配置
    config._metadata["项目名称"] = "测试报告"
    # 删除配置
    config._metadata.pop("JAVA_HOME")
    config._metadata.pop("Plugins")
    config._metadata.pop("Packages")
    config._metadata.pop("Platform")

修改 Results

从上面生成的报告列表中,看到主要分为下面几列数据:Result、Test、Links、Duration。这里面的数据其实可以看出都没有包含我们的测试数据,无法直观看出输入、输出结果。
做如下优化:

  • 1.删除 Test、Links 列
  • 2.增加几列分别展示参数化中的内容,如用例编号、输入、输出
  • 3.修改用例执行结果 show details 中内容,自定义展示内容

基于上述需求,要在报告中添加我们自己的测试数据展示,故需要添加一个全局变量在一个 case 执行过程中进行记录供调用。

创建全局变量:

# 定义一个全局变量,用于存储内容
global_data = {}
@pytest.fixture(scope="function")
def set_global_data():
    """
    设置全局变量,用于关联参数
    :return:
    """
    def _set_global_data(key, value):
        global_data[key] = value
    yield _set_global_data
    global_data.clear()

修改我们的用例函数,将测试数据加入到全局变量中。

@user2ize("data", case_list)
def test_case(data, set_global_data):
    set_global_data("id", data.get("id"))
    set_global_data("method", data.get("method"))
    set_global_data("case_input", data.get("case_input"))
    set_global_data("case_output", data.get("case_output"))
    try:
        assert data.get("case_input") == data.get("case_output")
    except AssertionError:
        set_global_data("error_step", "断言失败")
        raise

conftest.py 文件中增加和删除列。

@user3hook
def pytest_html_results_table_header(cells):
    """ 更改表头信息
    :param cells:
    :return:
    """
    cells.insert(1, html.th('用例ID', class_="sortable", col="id"))
    cells.insert(2, html.th('方法', class_="sortable", col="method"))
    cells.insert(3, html.th('输入', class_="sortable", col="case_input"))
    cells.insert(4, html.th('输出', class_="sortable", col="case_output"))
    cells.pop(-1)  # 删除link
    cells.pop(-2)  # 删除Test
@user4hook
def pytest_html_results_table_row(cells):
    """更改表中数据信息"""
    cells.insert(1, html.td(global_data.get("id")))
    cells.insert(2, html.td(global_data.get("method")))
    cells.insert(3, html.td(global_data.get("case_input")))
    cells.insert(4, html.td(global_data.get("case_output")))
    cells.pop(-1)  # 删除link
    cells.pop(-2)  # 删除Test

conftest.py 文件中修改执行结果 show details 内容。

@user5hook
def pytest_html_results_table_html(report, data):
    if report.failed:
        del data[:]
        data.append(html.span(f"失败步骤:{global_data.get('error_step')}\n输出结果:{global_data.get('case_output')}",
                              class_='fail log'))
    elif report.passed:
        del data[:]
        data.append(html.div(f"输出结果:{global_data.get('case_output')}", class_='success log'))

生成效果报告

可以看到现在生成的报告内容就可以清晰看到测试数据,和我们的用例数据关联上了。

后记

当前只是简单的对报告展示的数据进行了更改,感兴趣可以查看官方文档学习

https://docs.pytest.org/en/latest/reference/reference.html#hooks

以上就是pytest生成简单自定义测试结果html报告的详细内容,更多关于pytest生成自定义测试html的资料请关注Devmax其它相关文章!

pytest生成简单自定义测试结果的html报告的更多相关文章

  1. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  2. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. Pandas如何将表格的前几行生成html实战案例

    这篇文章主要介绍了Pandas如何将表格的前几行生成html实战案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  4. pytest生成简单自定义测试结果的html报告

    这篇文章主要为大家介绍了pytest生成简单自定义测试结果html报告,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. HTML form表单提交方法案例详解

    这篇文章主要介绍了HTML form表单提交方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  6. AngularJS通过$sce输出html的方法

    不知道大家有没有发现在用AngularJS作为前端搭建个人博客的时候,发现用AngularJs输出html的时候,浏览器并不解析这些html标签,这里我们需要其显示angular输出的html能被浏览器解析怎么办呢?不知道Angularjs如何实现这种功能的通过这篇文章来看看吧。

  7. angular将html代码输出为内容的实例

    今天小编就为大家分享一篇angular将html代码输出为内容的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  8. jQuery实现html table行Tr的复制、删除、计算功能

    这篇文章主要介绍了jQuery实现html table行Tr的复制、删除、计算功能,涉及jQuery针对table表格的常见复制、添加、删除与计算行数等简单操作技巧,需要的朋友可以参考下

  9. HTML+jQuery实现简单的登录页面

    这篇文章主要介绍了用三种方法实现简单的登录页面的制作:纯HTML、HTML+jQuery(form data)格式、HTML+jQuery(json)格式。感兴趣的同学可以跟随小编一起学习一下

  10. Ajax 动态载入html页面后不能执行其中的js快速解决方法

    这篇文章主要介绍了Ajax 动态载入html页面后不能执行其中的js快速解决方法,需要的朋友可以参考下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部