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

如何在spintop-openhtf框架中重复执行已通过的测试用例并指定次数?

实现spintop-openhtf测试用例指定次数重复执行(无论结果)

在spintop-openhtf里,默认重试仅在测试失败时触发,要实现不管用例通过/失败,都重复指定次数,可以通过自定义@retry装饰器的重试判定逻辑来实现,具体步骤如下:

1. 导入依赖模块

先导入框架核心模块和重试工具:

import openhtf as htf
from openhtf.util import retry

2. 自定义重试判定函数

写一个简单的判定函数,逻辑是:只要当前重试次数没到设定的上限,就继续执行,完全忽略测试结果:

def keep_retrying(test_state, retry_count, total_exec_times):
    # retry_count是已重试次数(第一次执行不算重试,从0开始)
    # 比如要总共执行3次,total_exec_times设为3,重试次数到2时停止
    return retry_count < (total_exec_times - 1)

3. 给测试用例添加自定义重试装饰器

在测试用例函数上,用@retry.retry装饰器,指定最大重试次数和自定义判定函数:

# 示例:让用例总共执行4次(1次初始执行 + 3次重试)
@htf.measures(htf.Measurement('sample_measure'))
@retry.retry(
    max_retries=3,  # 重试次数,总执行次数=max_retries+1
    should_retry=lambda ts, rc: keep_retrying(ts, rc, 4)
)
def repeatable_test(test):
    # 这里写你的测试逻辑,比如设置测量值
    test.measurements.sample_measure = 100
    # 哪怕测试通过,也会重复执行到指定次数

补充说明

  • max_retries是重试次数,不是总执行次数,总执行次数等于max_retries + 1(第一次执行不算重试)
  • 如果需要在每次重试前做初始化操作(比如重置硬件状态),可以在测试用例开头或通过装饰器的before_retry参数实现
  • 这种方式兼容框架原有机制,每次执行结果都会被正常记录到测试报告中

内容的提问来源于stack exchange,提问作者A I

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:40:55