pytest-html是pytest用于生成测试结果的html插件。可以登录github下载,可以使用pip进行安装。
pip安装命令:pip install pytest-html
以下是pytest-html通过pip安装的截图
运行html获取报告
执行语句:pytest --html=report.html![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220454-1992665563.png)
![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220478-43836202.png)
指定路径存放
命令:pytest --html=./assert/report.html![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220476-1691297453.png)
![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220495-1638555744.png)
独立显示报告
独立显示报告是为了分享报告时,界面依旧能按照原样式显示。 命令: pytest --html=report.html --self-contained-html![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220487-1941102331.png)
pytest错误截图
# conftest.py # coding:utf-8 import time from selenium import webdriver import pytest driver = None @pytest.mark.hookwrapper def pytest_runtest_makereport(item): pytest_html = item.config.pluginmanager.getplugin('html') outcome = yield report = outcome.get_result() extra = getattr(report, 'extra', []) if report.when == 'call' or report.when == "setup": xfail = hasattr(report, 'wasxfail') if (report.skipped and xfail) or (report.failed and not xfail): file_name = report.nodeid.replace("::", "_") + ".png" screen_img = _capture_screenshot() if file_name: html = '<div><img src="data:image/png;base64,%s" alt="screenshot" style="width:600px;height:300px;" ' \ 'onclick="window.open(this.src)" align="right"/></div>' % screen_img extra.append(pytest_html.extras.html(html)) report.extra = extra report.description = str(item.function.__doc__) def _capture_screenshot(): return driver.get_screenshot_as_base64() @pytest.fixture(scope='session', autouse=True) def browser(request): global driver if driver is None: driver = webdriver.Firefox() def end(): driver.quit() request.addfinalizer(end) return driver
# test_1.py import time def test_yoyo_01(browser): browser.get("https://www.cnblogs.com/qmm-1000/") time.sleep(2) t = browser.title assert t == "乌醍"
# test_02.py def test_02(browser): browser.get("https://www.cnblogs.com/qmm-1000/") time.sleep(2) t = browser.title assert '乌醍' in t
![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220641-1167130710.png)
pytest 失败重跑
失败重跑需要借助pytest-rerunfailures插件 下载指令: pip install pytest-rerunfailures 失败重跑命令: pytest --rerun 1 --html=report.html --self-contained-html (rerun后写几次运行几次)![0](/i/l/?n=23&i=blog/2004711/202301/2004711-20230131170220472-1342471317.png)