Robot Framework用测试用例变量设置TestCase Timeout报错求助
解决Robot Framework中用变量设置测试用例Timeout的问题
首先先还原你遇到问题时的代码:
*** Settings *** Library Collections Documentation Suite description Test Timeout 60 minutes *** Test Cases *** Test title ${TEST_TIMEOUT1} set variable 120 log to console ${TEST_TIMEOUT1} [Timeout] ${TEST_TIMEOUT1} minutes
你碰到的Setting test timeout failed: Variable ' ${TEST_TIMEOUT1} ' not found错误,本质是Robot Framework的执行顺序导致的:测试用例的配置项(比如[Timeout])是在测试用例内部的所有关键字执行之前就被框架解析的。当框架处理[Timeout]这一行时,${TEST_TIMEOUT1}还没通过Set Variable被赋值,自然会提示变量不存在。
下面给你两种可行的解决方案:
方案1:提前定义套件级变量
如果这个超时值是固定的、或者可以在测试前确定,你可以在*** Variables ***块里提前定义变量,这样框架解析测试用例配置时,变量已经存在了:
*** Variables *** ${TEST_TIMEOUT1} 120 *** Settings *** Library Collections Documentation Suite description Test Timeout 60 minutes *** Test Cases *** Test title log to console ${TEST_TIMEOUT1} [Timeout] ${TEST_TIMEOUT1} minutes
方案2:用内置关键字动态设置超时
如果需要在测试用例执行过程中动态计算或调整超时时间,推荐使用Robot Framework内置的Set Test Timeout关键字——它可以在测试用例内部随时修改超时值,完全避开配置项解析时机的限制:
*** Settings *** Library Collections Documentation Suite description Test Timeout 60 minutes *** Test Cases *** Test title ${TEST_TIMEOUT1} set variable 120 log to console ${TEST_TIMEOUT1} Set Test Timeout ${TEST_TIMEOUT1} minutes
这个方法更灵活,比如你甚至可以根据前置步骤的结果来调整超时时间,非常适合动态场景。
内容的提问来源于stack exchange,提问作者kishore
相关产品推荐
相关产品推荐

