實用指南:使用Pytest Allure測試框架添加用例失敗截圖

前言

在我們進行軟件測試的過程中,我們提交的測試報告缺少一些詳細的附件,尤其是用例失敗時候的截圖,更方便我們去查看具體的情況,我們在進行測試時會使用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 小時入門軟件測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章