目录:导读
一、生成html报告
1、pytest-html
pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告,兼容Python 2.7,3.6
1.github上源码地址【https://github.com/pytest-dev/pytest-html】
2.pip安装
pip install pytest-html
3.执行方法
pytest —html=report.html
2、html报告
1.打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest —html=report.html
2.执行完之后,在当前目录会生成一个report.html的报告文件,显示效果如下
3、指定报告路径
1.直接执行”pytest —html=report.html”生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里
pytest —html=./report/report.html
2.如果想指定执行某个.py文件用例或者某个文件夹里面的所有用例,需加个参数。具体规则参考【pytest文档2-用例运行规则】
4、显示选项
默认情况下,“ 结果”表中的所有行都将被展开,但具测试通过的行除外Passed
可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped
5、更多功能
更多功能查看官方文档【https://github.com/pytest-dev/pytest-html】
二、html报告报错截图+失败重跑
1、conftest.py
做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告
1.失败截图可以写到conftest.py文件里,这样用例运行时,只要检测到用例实例,就调用截图的方法,并且把截图存到html报告上
# conftest.py文件
# coding:utf-8
from selenium import webdriver
import pytest
driver = None
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item):
"""
当测试失败的时候,自动截图,展示到html报告中
测试追风 QQ交流群:743262921(备注222)
:param 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;" ' \
'οnclick="window.open(this.src)" align="right"/></div>' % screen_img
extra.append(pytest_html.extras.html(html))
report.extra = extra
def _capture_screenshot():
'''
测试追风 QQ交流群:743262921(备注222)
截图保存为base64,展示到html中
:return:
'''
return driver.get_screenshot_as_base64()
@pytest.fixture(scope='session', autouse=True)
def browser():
global driver
if driver is None:
driver = webdriver.Firefox()
return driver
2.用例部分如下:
# test_01.py文件
from selenium import webdriver
import time
'''测试追风 QQ交流群:743262921(备注222)'''
def test_yoyo_01(browser:webdriver.Firefox):
browser.get("https://blog.csdn.net/x2waiwai?spm=1000.2115.3001.5343")
time.sleep(2)
t = browser.title
assert t == "测试追风"
# test_02.py文件
from selenium import webdriver
import time
'''测试追风 QQ交流群:743262921(备注222)'''
def test_yoyo_01(browser:webdriver.Firefox):
browser.get("https://blog.csdn.net/x2waiwai?spm=1000.2115.3001.5343")
time.sleep(2)
t = browser.title
assert "测试追风" in t
2、报告展示
1.cmd打开,cd到用例的目录,执行指令
pytest —html=report.html —self-contained-html
3、失败重试
用例失败再重测1次,命令行加个参数就行了
py.test —rerun 1 —html=report.html —self-contained-html

