You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Cypress中特定测试用例的截图频率?

针对特定测试用例调整重试后截图策略

核心思路是通过自定义标记/属性区分目标测试用例,在截图逻辑中加入重试次数判断,仅当该用例的重试次数超过全局设置的3次时才触发截图。以下以常用测试框架为例给出具体实现:

基于pytest的实现(搭配pytest-rerunfailures插件)

  1. 给目标测试用例添加自定义标记
import pytest

# 遍历多场景的测试用例,打上自定义标记
@pytest.mark.only_screenshot_after_3_retries
@pytest.mark.parametrize("scenario", your_100_plus_scenarios)
def test_multi_scenario(scenario):
    # 测试逻辑
    assert scenario["expected"] == execute_scenario(scenario["params"])
  1. 修改全局截图钩子,加入标记判断和重试次数校验
def pytest_runtest_makereport(item, call):
    # 仅在测试失败时处理
    if call.excinfo is not None:
        # 检查当前用例是否有自定义截图标记
        use_custom_screenshot = item.get_closest_marker("only_screenshot_after_3_retries")
        
        if use_custom_screenshot:
            # 获取当前重试次数(pytest-rerunfailures插件会给item添加rerun_count属性)
            current_retry = getattr(item, "rerun_count", 0)
            # 仅当重试次数超过3次时截图
            if current_retry > 3:
                take_screenshot()  # 替换为你的截图函数
        else:
            # 全局逻辑:所有其他用例失败即截图
            take_screenshot()

基于unittest的实现

  1. 给目标测试用例添加自定义属性,并实现重试逻辑
import unittest
from your_retry_decorator import retry  # 需自行实现或使用第三方重试装饰器
from your_screenshot_module import take_screenshot

class TestMultiScenario(unittest.TestCase):
    # 标记该用例使用自定义截图策略
    custom_screenshot_policy = True
    global_retry_limit = 3

    @retry(tries=5)  # 设置该用例的总重试次数(需大于全局的3次)
    def test_multi_scenario(self):
        for scenario in your_100_plus_scenarios:
            self.assertEqual(scenario["expected"], execute_scenario(scenario["params"]))

    def tearDown(self):
        # 检查测试是否失败
        if self._outcome.errors:
            # 获取当前重试次数(需在重试装饰器中维护该属性)
            current_retry = getattr(self, "retry_count", 0)
            
            if getattr(self, "custom_screenshot_policy", False):
                if current_retry > self.global_retry_limit:
                    take_screenshot()
            else:
                take_screenshot()

关键注意点:

  • 确保重试装饰器/插件能正确暴露当前重试次数,方便在截图逻辑中获取
  • 自定义标记/属性的命名可根据你的项目规范调整,只要能准确区分目标用例即可

内容的提问来源于stack exchange,提问作者Kieran M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:55:22