亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Pytest失敗重跑機制pytest-rerunfailures的實現(xiàn)

 更新時間:2025年06月29日 10:20:52   作者:Tom Boom  
pytest-rerunfailures插件是解決自動化測試偶發(fā)故障的有效工具,通過--reruns設置重試次數(shù)和--reruns-delay配置間隔時間,具有一定的參考價值,感興趣的可以了解一下

在自動化測試中,偶發(fā)性失敗是常見痛點。本文將深入解析如何通過pytest-rerunfailures插件優(yōu)雅解決偶發(fā)故障問題。

一、核心命令解析

安裝命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest-rerunfailures
  • -i:指定鏡像源(國內(nèi)加速)
  • pypi.tuna.tsinghua.edu.cn:清華大學PyPI鏡像
  • pytest-rerunfailures:失敗重跑插件

基礎重跑命令

pytest -s testcases/test_rerun.py --reruns 5
  • --reruns 5:最大重試次數(shù)(失敗后自動重跑最多5次)

延遲重跑命令

pytest -s testcases/test_rerun.py --reruns 5 --reruns-delay 1
  • --reruns-delay 1:每次重試間隔1秒

二、為什么需要失敗重跑?

偶發(fā)性失敗的常見原因

失敗類型占比典型場景
環(huán)境波動40%網(wǎng)絡抖動、資源競爭
時序問題30%異步操作未完成
第三方依賴20%API限流、服務不穩(wěn)定
隨機因素10%隨機數(shù)據(jù)沖突

重跑機制的價值

graph LR
    A[首次失敗] --> B{是否可重跑?}
    B -->|是| C[自動重試]
    B -->|否| D[標記失敗]
    C --> E{重試成功?}
    E -->|是| F[報告成功]
    E -->|否| D

三、實戰(zhàn)演示:重跑機制應用

測試場景:支付結(jié)果查詢

# test_payment.py
import pytest
import random

def test_payment_status():
    """ 模擬第三方支付接口的不穩(wěn)定響應 """
    result = random.choice([True, False])  # 50%失敗率
    assert result, "支付狀態(tài)查詢失敗"

執(zhí)行結(jié)果對比

無重跑機制

$ pytest test_payment.py
============================
1 failed in 0.12s

啟用重跑機制

$ pytest test_payment.py --reruns 3 --reruns-delay 0.5
============================
rerun test_payment.py::test_payment_status
Rerun #1: 失敗
Rerun #2: 成功

1 passed, 2 rerun in 0.87s

四、進階使用技巧

1. 標記特定測試重跑

@pytest.mark.flaky(reruns=3, reruns_delay=1)
def test_api_connection():
    response = requests.get("https://unstable-api.com")
    assert response.status_code == 200

優(yōu)勢:針對不穩(wěn)定API單獨設置重試策略

2. 條件重跑(僅重試特定異常)

@pytest.mark.flaky(
    reruns=3, 
    condition=TypeError  # 僅當捕獲TypeError時重試
)
def test_data_processing():
    # 可能因數(shù)據(jù)類型錯誤失敗
    process_data(get_external_data())

3. 重跑結(jié)果報告增強

pytest --reruns 2 --reruns-delay 1 --html=report.html

報告效果

測試用例      狀態(tài)     重試次數(shù)
test_login   PASSED   0
test_payment PASSED   2 (首次失敗)

五、重跑機制原理剖析

執(zhí)行流程

1. pytest收集測試用例
2. 執(zhí)行原始測試
   - 成功 → 記錄結(jié)果
   - 失敗 → 觸發(fā)重試機制
3. 重試執(zhí)行(最多N次)
   - 任意成功 → 標記為passed
   - 全部失敗 → 標記為failed
4. 生成最終報告

注意事項

  1. setup/teardown:每次重試都會重新執(zhí)行
  2. 測試狀態(tài):只有最終狀態(tài)計入報告
  3. 耗時計算:包含所有重試時間總和

六、最佳實踐指南

1. 重試策略配置建議

場景類型rerunsreruns-delay說明
網(wǎng)絡依賴3-51-3s等待網(wǎng)絡恢復
異步操作2-30.5-1s給操作完成時間
高負載服務5+隨機延遲避免雪崩效應
數(shù)據(jù)庫競爭30.3s減少鎖沖突

2. 避免濫用重跑

不應使用重跑的場景

  • 邏輯性錯誤(永遠失?。?/li>
  • 環(huán)境配置錯誤
  • 數(shù)據(jù)一致性問題
  • 性能不達標場景

3. 結(jié)合其他機制

# 重跑+分布式執(zhí)行
pytest -n auto --reruns 3

# 重跑+失敗截圖
pytest --reruns 2 --screenshot-on-failure

# 重跑+性能監(jiān)控
pytest --reruns 1 --perf-monitor

七、企業(yè)級應用案例

案例1:電商支付系統(tǒng)測試

挑戰(zhàn):支付網(wǎng)關接口偶發(fā)超時(發(fā)生率約5%)
解決方案

pytest tests/payment/ --reruns 3 --reruns-delay 2

效果

  • 測試穩(wěn)定性從95%提升至99.9%
  • 誤報缺陷減少90%
  • 團隊信任度顯著提升

案例2:微服務集成測試

問題:服務啟動順序?qū)е屡及l(fā)失敗
重跑策略

@pytest.mark.flaky(
    reruns=2, 
    reruns_delay=5,  # 等待服務注冊完成
    condition=ConnectionError
)
def test_service_integration():
    # 測試服務間調(diào)用

案例3:移動App自動化測試

特殊需求

  • 首次安裝權限彈窗干擾
  • 應用啟動時間波動
    定制方案
pytest mobile_tests/ --reruns 1 --reruns-delay 10

首次失敗后等待10秒重試,避開初始化階段

八、常見問題解決方案

Q1:重跑導致測試時間過長

解決方案

# 只對標記為flaky的測試重跑
pytest -m flaky --reruns 3

# 使用智能延遲(指數(shù)退避)
@pytest.mark.flaky(reruns=3, reruns_delay="exponential")

Q2:如何區(qū)分重跑日志?

# conftest.py
def pytest_runtest_logstart(nodeid, location):
    if hasattr(request.node, "execution_count"):
        count = request.node.execution_count
        print(f"\n[重試 #{count}] {nodeid}")

Q3:重跑后如何清理狀態(tài)?

@pytest.fixture(autouse=True)
def cleanup_after_retry(request):
    yield
    if hasattr(request.node, "execution_count"):
        # 每次重試后清理
        reset_test_state()

九、重跑機制核心價值

核心優(yōu)勢矩陣

維度傳統(tǒng)模式重跑機制
穩(wěn)定性偶發(fā)失敗導致誤報過濾偶發(fā)故障
可信度報告可信度低真實反映質(zhì)量
維護成本大量時間排查偽缺陷聚焦真實問題
執(zhí)行效率手動重跑浪費時間自動恢復執(zhí)行

最佳實踐口訣

偶發(fā)失敗不用慌,rerun插件來幫忙
--reruns 設次數(shù),--delay 定間隔
標記注解更精準,避免濫用記心上
結(jié)合報告分布式,測試穩(wěn)定又高效

通過合理應用pytest-rerunfailures,您可以將自動化測試的穩(wěn)定性提升到新的高度。記?。?strong>重跑是應對偶發(fā)故障的利器,但不是代碼質(zhì)量問題的遮羞布。當測試頻繁重試時,仍需深入分析根本原因!

到此這篇關于Pytest失敗重跑機制pytest-rerunfailures的實現(xiàn)的文章就介紹到這了,更多相關Pytest失敗重跑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python線程詳解

    Python線程詳解

    這篇文章主要介紹了Python線程詳解,本文詳細講解了線程方方面面的知識,如線程基礎知識線程狀態(tài)、線程同步(鎖)、線程通信(條件變量)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Python hashlib模塊用法實例分析

    Python hashlib模塊用法實例分析

    這篇文章主要介紹了Python hashlib模塊用法,結(jié)合實例形式分析了Python使用hash模塊進行md5、sha1、sha224、sha256、sha512等加密運算相關操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • Python使用requests xpath 并開啟多線程爬取西刺代理ip實例

    Python使用requests xpath 并開啟多線程爬取西刺代理ip實例

    這篇文章主要介紹了Python使用requests xpath 并開啟多線程爬取西刺代理ip實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 使用scrapy ImagesPipeline爬取圖片資源的示例代碼

    使用scrapy ImagesPipeline爬取圖片資源的示例代碼

    這篇文章主要介紹了使用scrapy ImagesPipeline爬取圖片資源的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python如何查看并打印matplotlib中所有的colormap(cmap)類型

    Python如何查看并打印matplotlib中所有的colormap(cmap)類型

    這篇文章主要介紹了Python如何查看并打印matplotlib中所有的colormap(cmap)類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 深入淺析pycharm中 Make available to all projects的含義

    深入淺析pycharm中 Make available to all projects的含義

    這篇文章主要介紹了pycharm中 Make available to all projects的含義,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    這篇文章主要和大家分享兩個制作二維碼的Python庫,可以生成普通的二維碼、圖片背景版二維碼、動圖GIF版二維。文中的示例代碼講解詳細,感興趣的可以學習一下
    2022-05-05
  • Python中循環(huán)依賴問題及其解決方案

    Python中循環(huán)依賴問題及其解決方案

    在軟件開發(fā)中,循環(huán)依賴是一個常見的問題,尤其是在使用 Python 這樣的動態(tài)語言時,循環(huán)依賴指的是兩個或多個模塊或組件相互依賴,形成一個閉環(huán),本文將探討 Python 中循環(huán)依賴的問題,并提供一些解決方案,需要的朋友可以參考下
    2024-06-06
  • Django+Vue實現(xiàn)文件上傳下載的項目實踐

    Django+Vue實現(xiàn)文件上傳下載的項目實踐

    本文主要介紹了Django+Vue實現(xiàn)文件上傳下載的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • python批量生成本地ip地址的方法

    python批量生成本地ip地址的方法

    這篇文章主要介紹了python批量生成本地ip地址的方法,實例分析了Python實現(xiàn)生成本地IP地址并綁定到網(wǎng)卡上的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03

最新評論