Robot Framework如何复用首个关键字返回值且避免重复执行
Robot Framework 复用关键字返回值(避免重复执行)
核心思路:将返回值存储为套件/全局变量
把Create Account Post Request的返回值存入套件级公共变量,就能在整个套件的任意测试用例、关键字中直接复用,无需重复执行原关键字。
方法一:套件初始化时生成并存储变量
这是最常用的方式,在套件启动时一次性执行创建账户逻辑,把结果存为套件变量,后续全程复用。
- 在套件的
Settings区配置初始化关键字:
*** Settings *** Suite Setup Initialize Suite Resources
- 编写初始化关键字,执行创建并存储变量:
*** Keywords *** Initialize Suite Resources # 执行创建账户的关键字,获取返回值 ${account_id}= Create Account Post Request # 将返回值设为套件级变量,整个套件内可直接引用 Set Suite Variable ${SUITE_ACCOUNT_ID} ${account_id}
- 原
Create Account Post Request保持不变:
Create Account Post Request ${response}= call post request ${headers2} ${base_url} ${base_url_account} ${account_data} log ${response} Should Be True ${response.status_code} == 201 ${account_id}= get value from json ${response.json()} id log ${account_id} RETURN ${account_id}
- 其他关键字直接引用变量即可:
Get Network ID # 直接使用已存储的套件变量,无需重复执行创建账户 log ${SUITE_ACCOUNT_ID} # 后续业务逻辑直接用这个变量
方法二:缓存式关键字(按需初始化)
如果不需要在套件启动时就执行创建逻辑,可以写一个封装关键字,判断变量是否已存在,不存在才执行创建:
*** Keywords *** Get Cached Account ID # 检查变量是否已存在 ${var_exists}= Run Keyword And Return Status Variable Exists ${SUITE_ACCOUNT_ID} # 不存在则执行创建并存储 IF not ${var_exists} ${account_id}= Create Account Post Request Set Suite Variable ${SUITE_ACCOUNT_ID} ${account_id} END # 返回缓存的变量 RETURN ${SUITE_ACCOUNT_ID}
其他关键字调用这个缓存关键字即可:
Get Network ID ${acc}= Get Cached Account ID log ${acc}
针对你的疑问解答
如何在任意关键字中复用account_id?
将account_id通过Set Suite Variable(套件级)或Set Global Variable(全局级)存储为公共变量,整个套件/全局范围内的测试用例、关键字都能直接引用这个变量,无需重复执行生成逻辑。如何在其他关键字中使用第一个关键字的返回值?
直接引用已存储的公共变量,或者通过上述缓存式关键字获取——第一次调用会执行原关键字生成值,后续调用直接返回缓存的变量,完全避免重复执行。
内容的提问来源于stack exchange,提问作者Chirag Dhingra
相关产品推荐
相关产品推荐

