pytest-08-html報(bào)告報(bào)錯(cuò)截圖+失敗重跑

1、失敗截圖

一般會(huì)把失敗截圖放在conftest.py文件內(nèi),運(yùn)行時(shí),只要檢測(cè)到用例實(shí)例,就調(diào)用該方法

from selenium import webdriver

import pytest

driver = None

@pytest.mark.hookwrapper

def pytest_runtest_makereport(item):

? ? """當(dāng)測(cè)試失敗的時(shí)候,自動(dòng)截圖,展示到html報(bào)告中"""

? ? 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

def _capture_screenshot():

? ? """截圖保存為base64,展示到html中 """

? ? return driver.get_screenshot_as_base64()

@pytest.fixture(scope='session', autouse=True)

def browser():

? ? global driver

? ? if driver is None:

? ? ? ? driver = webdriver.Chrome()

? ? return driver

如果未安裝selenium,可以在file->setting->project:pytest-> Project Interprester? 這個(gè)會(huì)話中,雙擊pip,在搜索框中輸入selenium 然后點(diǎn)擊左下方install 即可

生成報(bào)告:pytest --html=./report/report.html --self-contained-html

如果遇到如下:AttributeError: 'NoneType' object has no attribute 'get_screenshot_as_base64'錯(cuò)誤,可能是因?yàn)槲磳?duì)想打開的瀏覽器中添加相應(yīng)版本的driver驅(qū)動(dòng)

未安裝瀏覽器驅(qū)動(dòng)報(bào)錯(cuò)

谷歌驅(qū)動(dòng)下載地址:http://chromedriver.storage.googleapis.com/index.html

為了方便可直接將谷歌瀏覽器驅(qū)動(dòng)chromedriver.exe放到項(xiàng)目的目錄下

執(zhí)行命令后生成報(bào)告

2、? 失敗重試

失敗重試需要依賴插件pytest-rerunfailures插件

執(zhí)行:pip install pytest-rerunfailures 命令安裝

用例失敗再重跑n次,命令行增加參數(shù)--reruns n 其中n是次數(shù) 默認(rèn)是0次

pytest --reruns 1 --html=./report/report.html --self-contained-html

添加延遲n秒再重跑1次,命令行增加參數(shù) --reruns-delay=n 其中n是多少秒

pytest --reruns=1 --reruns-delay=3 --html=./report/report.html --self-contained-html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 導(dǎo)包 import unittest 測(cè)試類以Test開頭 測(cè)試方法名稱必須以test開頭 pytest命令行運(yùn)行...
    xiaohan_zhang閱讀 477評(píng)論 0 0
  • 本文參考了官方文檔和一些樂(lè)于分享的大佬的博客,結(jié)合自己的理解完成。學(xué)習(xí)pytest框架的小白,需要按照教程自己敲一...
    成都_阿木木閱讀 14,501評(píng)論 1 6
  • 前言 pytest-HTML是一個(gè)插件,pytest用于生成測(cè)試結(jié)果的HTML報(bào)告。兼容Python 2.7,3....
    云櫻夢(mèng)海閱讀 23,202評(píng)論 0 3
  • 引言 如果你想快速上手pytest,只關(guān)注"Pytest必會(huì)知識(shí)點(diǎn)"章節(jié)就可以了(該章節(jié)已經(jīng)能夠解決基礎(chǔ)的ui和接...
    測(cè)試開發(fā)Kevin閱讀 1,753評(píng)論 0 15
  • 一、自動(dòng)化測(cè)試所屬分類(站在代碼可見(jiàn)度角度分類) 1. 黑盒測(cè)試(功能測(cè)試)2. 灰盒測(cè)試(接口測(cè)試)3. 白盒測(cè)...
    MAVIS_42bf閱讀 1,032評(píng)論 0 0

友情鏈接更多精彩內(nèi)容