当我们运行完我们的测试用例后,需要一个结果展示,那就是测试报告。Pytest作为一个强大的第三方库,也提供了输出测试报告的插件,比如Html、Allure等,本文对Pytest-Html进行探讨学习。【注:本文全过程基于IDE Pycharm 虚拟开发环境】

目录

一、Pytest-Html介绍及安装

二、项目详情

1、 定制化Pytest-Html(conftest.py)

1.1、环境信息精简

1.2、添加Summary展示的信息

1.3、增加用例描述和去除link列

2、测试用例(test_html.py)

3、测试用例运行入口(run.py)

三、Html测试报告输出

1、执行run.py文件

2、查看html测试报告

总结


一、Pytest-Html介绍及安装

Pytest是python的一种单元测试框架,能够极大地提高自动化测试的效率,相较于unittest框架,Pytest使用起来更简洁,效率更高。就本人来使用体验来说,Pytest的自定义前/后置及数据传参两大功能是自动化测试不可或缺的。今天介绍一下pytest-HTML这个插件,并通过该插件将测试结果可视化。

安装:

  • 当前环境:python 3.6.8
  • 前提条件:pytest (!=6.0.0,>=5.0)、pytest==5.4.3
  • 安装方式:pip install pytest-html==2.1.1 终端安装指定版本,3.0以上有兼容性问题

二、项目详情

以下是最为简单的一个结构,大家可做参考,主要为大家能够理解并运用Pytest-Html测试报告,下边做详细介绍。

1、 定制化Pytest-Html(conftest.py)

以下是最为原始的html报告,其实在我们实际工作中,部分环境信息不一定要在报告中详细提现,可以适当增减;links列没有用到,可以删除;一般来说还可以添加一个测试用例的描述,大家学到后边就可以理解了~

接下来就开始定制化Pytest-Html,所有内容均需要在conftest.py中配置。

首先引入相关包

import pytest
from py.xml import html

1.1、环境信息精简

def pytest_configure(config):#修改Environment展示信息#添加项目名称config._metadata["项目名称"] = "HTML封装测试"#删除JAVA_HOMEconfig._metadata.pop("JAVA_HOME")#删除Pluginsconfig._metadata.pop("Plugins")

1.2、添加Summary展示的信息

def pytest_html_results_summary(prefix):'''Summary部分在此设置'''prefix.extend([html.p("测试开发组:尹煜")])

1.3、增加用例描述和去除link列

这是定制化中较为重要及复杂的部分,description取值就是测试用例下的解释行,参考3.2。

def pytest_html_results_table_header(cells):cells.insert(1,html.th('Description'))#表头添加Descriptioncells.pop()#删除linkdef pytest_html_results_table_row(report,cells):if hasattr(report,'description'): #判断对象是否包含对应的属性cells.insert(1,html.td(report.description))#表头对应的内容cells.pop()else:print("!!!",report.longreprtext)@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):  #description取值为用例说明'''doc'''outcome = yieldreport = outcome.get_result()report.description = str(item.function.__doc__)

2、测试用例(test_html.py)

输出测试报告的前提当然是存在测试用例,而且命名需符合Pytest用例设计规范(①文件名必须test_开头,如:test_pytest_demo1.py、②类必须Test开头、③方法名必须test_开头)。

下边三个用例仅供测试html报告使用,假如正常输出报告,应该是2成功+1失败。

  • 断言(assert+表达式),断言验证操作是否执行成功,相当于功能测试用例中的预期结果
class TestDemo():def test_01(self):'''测试加法功能一'''print('测试加法功能一开始')assert 3+4==7,"断言失败"def test_02(self):'''测试加法功能二'''print('测试加法功能二开始')assert 3+4==8,"断言失败"def test_03(self):'''测试加法功能三'''print('测试加法功能三开始')assert 4+4==8,"断言失败"

3、测试用例运行入口(run.py)

此文件可以当作执行全部用例的入口,同时也可写入pytest命令行方式,直接在pycharm中执行输出报告,后续也方便Jenkins等持续集成工具的调用。

import os
import time
import pytestdef run_main():#测试用例文件路径——参考具体项目路径test_case = r'C:\Users\xiaowo\Desktop\TestHtml\test_html.py'#html报告命名name_html = time.strftime('%Y_%m_%d_%H', time.localtime(time.time())) + '.html'#html报告输出路径——参考具体项目路径report_path = os.path.join(r'C:\Users\xiaowo\Desktop\TestHtml',name_html)#通过python代码执行pytest命令行方式pytest.main(['-v', '--html={}'.format(report_path), '--self-contained-html', test_case])if __name__ == "__main__":run_main() #可执行输出报告操作

三、Html测试报告输出

1、执行run.py文件

最后在run.py文件执行run_main()函数后,以实时日期作为文件名的html测试报告便会自动生成了。

2、查看html测试报告

进入2022_04_06_20.html文件后会发现是html格式,因此我们可以点击右上角熟悉的浏览器进行查看,笔者选择了Edge浏览器。

下边就是正式的html测试报告,红方框内就是html定制化后的结果,是否合理了许多,通过,圆框内所展示的测试用例通过情况也完全符合预期结果。


总结

本文不同于新手教程,可能需要大家具备部分测试框架基础,然后大家如果有疑问都可以评论提出,最后有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。

【测试开发】Pytest—Html测试报告定制及封装相关推荐

  1. python pytest allure_python测试框架pytest和测试报告allure的联合使用-----测试套件

    最近采用jenkins+python+pytest+allure写了一些自动化测试用例.碰到这样一种场景:如果我创建了2个测试任务,测试任务1包含2个测试用例test_a.py和test_b.py,测 ...

  2. python测试用例管理_Python测试框架Pytest的常用插件测试报告

    原标题:Python测试框架Pytest的常用插件测试报告 一.pytest-html 生成 html 测试报告 要求:Python 3.6+ 安装:pip install pytest-html 文 ...

  3. 霍格沃兹测试开发学社技术学习笔记之pytest的使用

    1. 简介 pytest是一个成熟的全功能python测试框架 测试用例的skip和xfail,自动失败重试等处理 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium ...

  4. 0基础24岁女硕士生,想转行做月薪30k的测试开发,需要从什么开始学习?

    最近后台有个粉丝留言说:说她24岁硕士生,本科和研究生阶段都未接触过测开.那该如何学习测试开发呢,接下来我带大家一一解惑 与IT行业大量男生的现状相比,女生一旦做得好的话,反而会更受欢迎,女生天生具有 ...

  5. 【自动化测试】整理各种测试开发工具!持续更新

    收集和整理各种测试工具,自动化测试工具,自动化测试框架,觉得有帮助记得三连一下. 欢迎提交各类测试工具到本博客. 通用测试框架 JUnit: 最著名的xUnit类的单元测试框架,但是不仅仅可以做单元测 ...

  6. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

  7. pytest allure测试报告_用Pytest+Allure生成漂亮的HTML图形化测试报告

    对于软件测试工作来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范.内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟通成本. 本篇文章将介绍如何使用开源的测 ...

  8. 做了十年的功能测试,下一步该晋升测试开发还是转行软件开发?

    软件测试君看到过这样的一个帖子,根据题主的描述可以看出来他是一名拥有十年工作经验的功能测试人员,目前掌握的技能还只是简单的功能测试,没有什么代码能力,面对功能测试的职场窘境,正在选择下一步该转测试开发 ...

  9. “我转行做测试开发的这一年多,月薪5K变成了24K”,中文系萌妹的自白

    公司老板是我的测试引路人 本人就读于某普通院校,在大学期间就开始实习找工作,误打误撞进入一家做工业大数据的创业公司. 刚开始我并没有明确的职业发展方向,主要是做一些环境搭建的基础工作.但由于执行效率高 ...

  10. “我转行做测试开发的这一年多,月薪5K变成了24K”,文科女生的自白

    我是如何开始做测试的? 本人就读于某普通院校,在大学期间就开始实习找工作,误打误撞进入一家做工业大数据的创业公司. 刚开始我并没有明确的职业发展方向,主要是做一些环境搭建的基础工作.但由于执行效率高, ...

最新文章

  1. 一步一图,带你了解分布式架构的前世今生!
  2. php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
  3. google reader很有用的技巧 F+F11
  4. python队列在进程传递_Python 进程队列
  5. [ActionScript 3.0] AS3.0 下雨及涟漪效果
  6. JAVA两类比较器的区别(Comparable,Comparator)
  7. mac 上brew加速
  8. idea jar放进本地仓库 为何依赖不了_推荐 33 个 IDEA 最牛配置,写代码太爽了
  9. 峰值信噪比公式_关于 PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比的个人理解
  10. 傻瓜式脱壳保姆级教学
  11. 阿里巴巴2016前端开发工程师笔试一
  12. python计算营业额代码_python计算营业额的代码_python 统计代码行数简单实例
  13. CREATE PROCEDURE
  14. js中的设计模式之中介者模式
  15. 高通平台sensor学习
  16. 使用VB写一个简单的添加系统环境变量的软件以及实现一键格式化U盘
  17. 世界互联网大会展示前沿技术热议创新方向
  18. python网络安全论文题目_全新计算机专业毕业设计选题(毕业论文题目)
  19. ​​​​​​​24点游戏
  20. Chromium插件(Plugin)模块(Module)加载过程分析

热门文章

  1. 寻租——乞丐没有白拿施舍
  2. android 通知写法_Android消息通知-Notifation
  3. 管理信息系统需求调研分析指南
  4. 宇视摄像机媒体流达到上限
  5. 《捷哥浅谈Drupal》第三弹之Drupal 7基本功能概述
  6. 软件设计师-3.数据结构与算法基础
  7. 不能错过!9个让你随时保持精力充沛的习惯
  8. Flink1.12-2021黑马 8 Flink高级特性和新特性
  9. php做seo优化,php做seo优化能力有哪些
  10. IDEA告警:Field can be converted to a local varible