多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

基于Python豆瓣自动化测试

更新时间:2022-08-12 09:30:52 作者:多测师 浏览:42

  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标记语言内容

基于Python豆瓣自动化测试

  测试报告Title

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

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

  @pytest.hookimpl(optionalhook=True)

  def pytest_html_report_title(report):

  report.title = "豆瓣网自动化测试示例(基于Pytest)"

  扩展Summary部分

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

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

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

  @pytest.hookimpl(optionalhook=True)

  def pytest_html_results_summary(prefix, summary, postfix):

  prefix.extend([html.p("测试人: 姜子轩")])

  Result 表格的扩展

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

  看完上述源码相信,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。

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

  具体代码演示。

  @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 里面。其中,整个报告的生成 在 _generate_report 函数中。

  以上内容为大家介绍了基于Python豆瓣自动化测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部