• pytest-html测试报告


    1、安装类库: pytest-html

    2、生成默认html报告:pytest --html=报告名称.html

    3、执行指定文件生成测试报告:在指定运行脚本下方输入

    if __name__ == '__main__':
        pytest.main(['XXX.py','--html=XXReport.html'])

    4、定制报告内容

    1.在测试报告中追加测试执行人描述信息

    进入conftest.py文件(放在框架根目录下)

    添加以下代码

    1. #*********************************************************
    2. #在html测试报告中添加测试人信息
    3. @pytest.mark.optionalhook
    4. def pytest_html_results_summary(prefix, summary, postfix):
    5. prefix.extend([html.p("测试人: 测试人姓名")])
    6. # 执行测试报告,可以使用指令也可以使用main方法如下:
    7. if __name__ == '__main__':
    8. pytest.main(['XXX.py','--html=XXReport.html'])

     

    2.在测试报告中追加每个测试方法的执行时间

    进入conftest.py

    添加以下代码

    1. import time
    2. #在html测试报告中添加测试执行时间
    3. @pytest.mark.optionalhook
    4. def pytest_html_results_table_row(report, cells):
    5. cells.insert(1, html.td(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), class_='col-time'))
    6. cells.pop()

    3.在测试报告中添加错误截图

    进入conftest.py

    添加以下代码

    1. #导入selenium类库
    2. from selenium import webdriver
    3. #定义全局的driver变量
    4. driver = None
    5. #设置一个browser固件
    6. @pytest.fixture(scope='session', autouse=True)
    7. def browser():
    8. global driver
    9. if driver is None:
    10. driver = webdriver.Chrome()
    11. return driver
    12. #定义截屏方法
    13. def _capture_screenshot():
    14. return driver.get_screenshot_as_base64()
    15. #定义添加错误图片的钩子函数
    16. @pytest.mark.hookwrapper
    17. def pytest_runtest_makereport(item):
    18. """
    19. 当测试失败的时候,自动截图,展示到html报告中
    20. :param item:
    21. """
    22. pytest_html = item.config.pluginmanager.getplugin('html')
    23. outcome = yield
    24. report = outcome.get_result()
    25. extra = getattr(report, 'extra', [])
    26. if report.when == 'call' or report.when == "setup":
    27. xfail = hasattr(report, 'wasxfail')
    28. if (report.skipped and xfail) or (report.failed and not xfail):
    29. file_name = report.nodeid.replace("::", "_") + ".png"
    30. screen_img = _capture_screenshot()
    31. if file_name:
    32. html = '
      screenshot \
    33. 'onclick="window.open(this.src)" align="right"/>
      ' % screen_img
  • extra.append(pytest_html.extras.html(html))
  • report.extra = extra
  • 4.备注

    钩子函数也叫回调函数

    普通函数我们自己定义自己去调用

    用系统提供给我门的方法去写代码,代码提交给这个框架去运行,但是我们可以给他定一些具体·的要求

    定义参数定义属性肯定是要在公共的configtest ,做初始化的

    使用了xml对象里面的 的html方法,来创建html测试报告 ,如果要改也要调用里面的方法和对象,所以需要引入一下

    有前缀有总结部分有后缀

    def pytest_html_results_summary(prefix,summary,postfuix):
            因为是要添加去测试人字段

            prefix.extend([html.p("测试人":Atstudy_wuxiuna")])

    .p就是标签,就是分段       

    测试报告里面,失败的测试方法没有详细的记载‘

    测试报告可以进行完善’如果是固定这个模式,没有什么可扩展空间了,使用其他的第三放插件

    想定制一些自己的信息

    钩子函数,设置了没有起效,很简单,是因为conftest用的是broswer的浏览器,但是脚本里面用是自己的浏览器

    需要在脚本方法下        加一个browser,把脚本里面的所有self.driver替换成browser,驱动浏览器的函数就可以直接注释掉

    html测试框架报告对初始化方法不适配,所有的东西都不完美,同样teardown也是一样的

  • 相关阅读:
    710. 黑名单中的随机数
    【Linux集群教程】07 块存储之 iSCSI 服务
    数据结构-二叉树-堆
    Codeforces Round #802 (Div. 2)
    滑动窗口9.23
    机器学习:逻辑回归--过采样
    基础算法 - 求子矩阵的和
    maven 上传本地jar包到nexus
    通过 Nginx 实现多机负载均衡
    【雷达波位编排】基于matlab相控阵雷达的波位编排仿真【含Matlab源码 2251期】
  • 原文地址:https://blog.csdn.net/weixin_47547541/article/details/126772451