基于Python豆瓣自动化测试

admin 2024年8月12日16:37:36评论17 views字数 3368阅读11分13秒阅读模式

来源:博客园

测试报告说起

  使用过的pytest-html 插件原生态的报告的话,可能会发现内容样式都有些不同。其实是做了些扩展相关设置所呈现的效果,当然可以定制的更深度一些,更加中文、本地化,又或者根据公司需要进行定向研发。例如就上文中的测试报告进行一些中文定制改造后效果如下图所示。这篇就如何优化、定制pytest-html 测试报告进行些讲解

基于Python豆瓣自动化测试

  Pytest-html 扩展

  目前最新的 pytest-html版本为2.1.1 。这个版本共提供 5个Hook,分别是:

def pytest_html_report_title(report)

设置测试报告的标题

def pytest_html_results_summary(prefix, summary, postfix)

在Summary部分,添加自定义内容

def pytest_html_results_table_header(cells)

 定制 Result 部分,表单的头部

def pytest_html_results_table_row(report, cells)

定制Result部分,每行测试Case的内容

 def pytest_html_results_table_html(report, data)

  在完成Result渲染后,详情新增写HTMl标记语言内容

  测试报告Title

  所谓Title指代的是报告图中【豆瓣网自动化测试示例(基于Pytest)】行文字内容。Report 其实是 插件的HTMLReport对象,简单看下源码,相信使用上就能很好的把握理解。关键部分见红框

基于Python豆瓣自动化测试

  所以,这个扩展而言只需要 conftest.py 对于扩展hook中设置下report title字段就能够,按需修改标题。

      @pytest.hookimpl(optionalhook=True)  def pytest_html_report_title(report):  report.title = "豆瓣网自动化测试示例(基于Pytest)"

  扩展Summary部分

  Summary扩展设计,允许对于 整个模块进行定制。分为前(prefix)、中(summary)、后(postfix)三个部分进行设置。同样的 看下源码,更好的把握如何来使用。关键部分见红框

基于Python豆瓣自动化测试

  其实,就是把 前中后三个部分的html拼接起来,中部(summary) 会有些插件默认的html内容。

基于Python豆瓣自动化测试

  所以,扩展使用上就很明晰了,只需要把html设置进去即可。

     @pytest.hookimpl(optionalhook=True)  def pytest_html_results_summary(prefix, summary, postfix):  prefix.extend([html.p("测试人: 姜子轩")])

  Result 表格的扩展

  可以分成两部分,一部分是表头的设置。同样的通过 cells 来生成 Result 表格的头部。

基于Python豆瓣自动化测试

  看完上述源码相信,pytest_html_results_table_header 使用上就非常明确了。主要就是对cells进行操作。

     @pytest.hookimpl(optionalhook=True)  def pytest_html_results_table_header(cells):  cells.insert(2, html.th('模块'))  cells.insert(3, html.th('描述'))  cells.insert(4, html.th('时间', class_='sortable time', col='time'))  cells.pop()

  对于每一行数据进行扩展上,也就是 pytest_html_results_table_row、pytest_html_results_table_html。这两个的使用,同样先看下源码。

基于Python豆瓣自动化测试

  其中两个函数的关键点在于 report 参数,cells 与 data用来制定扩展的html标签,而内容上通过 report 来进行透传。所以 这里一般会结合pytest内置的hook来使用,pytest_runtest_makereport。具体来说如下:

基于Python豆瓣自动化测试

  具体代码演示。

   @pytest.hookimpl(optionalhook=True)  def pytest_html_results_table_row(report, cells):  cells.insert(2, html.td(report.module))  cells.insert(3, html.td(report.description))  cells.insert(4, html.td(datetime.utcnow(), class_='col-time'))  cells.pop()  @pytest.hookimpl(hookwrapper=True)  def pytest_runtest_makereport(item, call):  outcome = yield  report = outcome.get_result()  report.description = str(item.function.__doc__)  report.module = str(item.module.__doc__)

深度定制

  以上内容,可以看到Pytest-html v2.1.2版本 提供的全部扩展功能,能够对 title、summary、table 进行内容扩展研发。不过,无法实现本文最前面全中文报告。所以 想要完美 的根据公司、业务需求改造,这里提供一个思路方法可以将 Pytest-html 源码下载下来进行改造。其 整体的实现并不复杂,主要逻辑 在 plugin.py 里面。

基于Python豆瓣自动化测试

  其中,整个报告的生成 在 _generate_report 函数中,在本篇中不再深入说明。

基于Python豆瓣自动化测试

本书第1章与第2章介绍软件单元测试的概念和基础知识。

  • 第1章简单介绍软件单元测试所包含的概念,包括桩对象和测试驱动函数、测试驱动开发、软件测试贯彻始终、软件测试金字塔、单元测试在传统/敏捷开发模式中的地位、精准测试、单元测试和白盒测试,以及单元测试的FIRST原则和AIR原则。

  • 第2章介绍软件单元测试基础知识,包括动态自动化/手工单元测试、静态自动化/手工单元测试。在动态自动化单元测试中介绍了语句覆盖、分支覆盖、条件覆盖、条件/分支覆盖、MC/DC、路径覆盖和控制流覆盖。

第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架。

  • 第3章介绍C语言动态自动化单元测试框架,包括在Windows下安装C语言运行环境、在Windows和Linux下安装编译CUnit、查看测试报告、CUnit介绍和案例。

  • 第4章介绍Java语言动态自动化单元测试框架,包括在Eclipse中创建Maven项目和配置JUnit与TestNG运行环境、JUnit 4测试框架、JUnit 5测试框架、TestNG测试框架、测试替身、变异测试、利用EvoSuite自动生成测试用例,以及在Jenkins中配置JUnit 4、JUnit 5、TestNG和Allure。

  • 第5章介绍Python语言动态自动化单元测试框架,包括unittest、Pytest及Python的模拟对象和变异测试工具mutpy。

第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具。

  • 第6章介绍代码覆盖率工具,包括C语言覆盖率工具gcov和lcov、Java语言覆盖率工具JaCoCo,以及Python语言覆盖率工具Coverage和pytest-cov。

  • 第7章介绍代码语法规范检查工具,包括Java语言静态分析工具PMD、Python语言静态分析工具flake8和pylint,以及多代码语法规范检查平台SonarQube。

  • 第8章通过两个案例详细介绍TDD。

    读者可以根据自己的需求对以上内容进行选择性阅读或者全部阅读。另外,为了巩固大家的学习效果,每一章结尾都有相应的习题。

顾翔凡言:人工智能未来的发展瓶颈在于对知识的更新。唯一不变的是变化,知识发生了变化,人工智能软件能否及时跟进变化,可能阻碍人工智能使用。

基于Python豆瓣自动化测试

原文始发于微信公众号(啄木鸟软件测试):基于Python豆瓣自动化测试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月12日16:37:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于Python豆瓣自动化测试https://cn-sec.com/archives/3058083.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息