如何在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
相关产品推荐
相关产品推荐

