前言
在我們進行軟體測試的過程中,我們提交的測試報告缺少一些詳細的附件,尤其是用例失敗時候的截圖,更方便我們去檢視具體的情況,我們在進行測試時會使用allure+pytest
來生成測試報告,本文我們就來介紹一下在allure測試報告中新增用例失敗截圖。
鉤子函式準備
我們可以使用pytest_runtest_makereport
來獲取獲取用例執行結果,因此我們可以先在conftest.py
寫一下我們的鉤子函式,如下:
# coding=utf-8
import pytest, os, allure
from selenium import webdriver
import xlrd
# 用例失敗後自動截圖
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
"""
獲取用例執行結果的鉤子函式
:param item:
:param call:
:return:
"""
outcome = yield
report = outcome.get_result()
if report.when == "call" and report.failed:
mode = "a" if os.path.exists("failures") else "w"
with open("failures", mode) as f:
if "tmpir" in item.fixturenames:
extra = " (%s)" % item.funcargs["tmpdir"]
else:
extra = ""
f.write(report.nodeid + extra + "\n")
with allure.step('新增失敗截圖...'):
allure.attach(driver.get_screenshot_as_png(), "失敗截圖", allure.attachment_type.PNG)
@pytest.fixture(scope='session', autouse=True)
def browser():
global driver
driver = webdriver.Chrome()
return driver
測試用例
我們以登入豆瓣為例,寫一下我們的測試程式碼,如下:
import pytest, os
from selenium import webdriver
import allure
def test_login(browser):
with allure.step("step1:開啟登入首頁"):
browser.get("https://accounts.douban.com/passport/login")
with allure.step("step2:輸入賬號"):
browser.find_element_by_name("username").send_keys("xxxxxxx")
with allure.step("step2:輸入密碼"):
browser.find_element_by_name("password").send_keys("xxxxxx")
if __name__ == "__main__":
pytest.main(['--alluredir', '../report', 'test_2.py::test_login'])
# allure轉換成---html並開啟測試報告
os.system('cd D:/se_frame/Reports/allure_data')
os.system('allure generate ../report -o report/html --clean')
總結
透過結合Pytest和Allure框架,我們可以輕鬆地為測試用例新增失敗時的截圖功能,從而更好地理解測試結果並加快故障排查的速度。希望本文能夠幫助大家更好地利用Pytest和Allure框架進行測試,並提高軟體質量。
推薦學習
【霍格沃茲測試開發】7 天軟體測試快速入門 帶你從零基礎/ 轉行/ 小白/ 就業/ 測試用例設計實戰
【霍格沃茲測試開發】最新版!Web 自動化測試從入門到精通/ 電子商務產品實戰/Selenium (上集)
【霍格沃茲測試開發】最新版!Web 自動化測試從入門到精通/ 電子商務產品實戰/Selenium (下集)
【霍格沃茲測試開發】明星講師精心打造最新Python 教程軟體測試開發從業者必學(上集)
【霍格沃茲測試開發】明星講師精心打造最新Python 教程軟體測試開發從業者必學(下集)
【霍格沃茲測試開發】精品課合集/ 自動化測試/ 效能測試/ 精準測試/ 測試左移/ 測試右移/ 人工智慧測試
【霍格沃茲測試開發】騰訊/ 百度/ 阿里/ 位元組測試專家技術沙龍分享合集/ 精準化測試/ 流量回放/Diff
【霍格沃茲測試開發】Pytest 用例結構/ 編寫規範 / 免費分享
【霍格沃茲測試開發】JMeter 實時效能監控平臺/ 資料分析展示系統Grafana/Docker 安裝
【霍格沃茲測試開發】介面自動化測試的場景有哪些?為什麼要做介面自動化測試?如何一鍵生成測試報告?
【霍格沃茲測試開發】面試技巧指導/ 測試開發能力評級/1V1 模擬面試實戰/ 衝刺年薪百萬!
【霍格沃茲測試開發】騰訊軟體測試能力評級標準/ 要評級表格的聯絡我
【霍格沃茲測試開發】Pytest 與Allure2 一鍵生成測試報告/ 測試用例斷言/ 資料驅動/ 引數化
【霍格沃茲測試開發】App 功能測試實戰快速入門/adb 常用命令/adb 壓力測試
【霍格沃茲測試開發】阿里/ 百度/ 騰訊/ 滴滴/ 位元組/ 一線大廠面試真題講解,卷完拿高薪Offer !
【霍格沃茲測試開發】App自動化測試零基礎快速入門/Appium/自動化用例錄製/引數配置
【霍格沃茲測試開發】如何用Postman 做介面測試,從入門到實戰/ 介面抓包(最新最全教程)
【霍格沃茲測試開發】6 小時輕鬆上手功能測試/ 軟體測試工作流程/ 測試用例設計/Bug 管理
【霍格沃茲測試開發】零基礎小白如何使用Postman ,從零到一做介面自動化測試/ 從零基礎到進階到實戰
【霍格沃茲測試開發】建議收藏全國CCF 測試開發大賽Python 介面自動化測試賽前輔導 / 專案實戰
新手專區--7 小時入門軟體測試