html报告+错误截图
首先我们通过pip安装html插件
> pip install pytest-html
运行的命令就是在正常的命令后边加上 --html=test.html 也就是
> pytest --html=test.html
这样生成的报告 test.html 就会自动生成在同级目录下,如果想指定目录的话也可以:
> pytest --html=./report/test.html
这样就会在同级目录中建立个 report 文件夹,test.html会生成在文件夹当中!上面方法生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享发邮件展示报告,可以把css样式合并到html里
> pytest --html=report.html --self-contained-html
失败截图可以直接写到conftes.py中,如下:
import pytest
import time
from selenium import webdriver
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item):
"""
当测试失败的时候,自动截图,展示到html报告中
"""
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="https://img-blog.csdnimg.cn/2022010621212692260.png" 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
def _capture_screenshot():
'''
截图保存为base64,展示到html中
:return:
'''
return driver.get_screenshot_as_base64()
@pytest.fixture(scope='session')
def dri(request):
global driver
driver = webdriver.Chrome()
def end():
driver.quit()
request.addfinalizer(end)
return driver
import pytest
import time
@pytest.mark.webtest
def test_1(dri,start):
'''
搜索python
'''
print('搜索python')
dri.find_element_by_id('kw').send_keys('python')
dri.find_element_by_id('su').click()
time.sleep(5)
#直接断言失败
assert 1 == 2
命令运行 > pytest -m webtest --html=./teport/test1.html --self-contained-html
生成的报告如下:
失败重试
首先我们要pip安装插件
> pip install pytest-rerunfailures
失败重试只需要在命令运行的时候加上 --reruns n (n代表的是数字,也就是失败重试几次)
> pytest --reruns 2
上述命令代表的意思就是失败后重试2次
通过上述报告我们发现,第一条信息是第三次运行的结果,第二条是第一次运行的结果,第三条是第二次运行的结果