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

__init__.robot中定义的Suite变量无法在测试用例中访问

Robot Framework套件变量初始化后子套件访问为空的问题解决

问题场景

套件结构如下:

Suite_folder
  |- __init__.robot
  |-\service_name
    |-\Resources
    | |-myresources.robot
    |-test_cases1.robot
    |-test_cases2.robot

在__init__.robot中通过Suite Setup初始化套件变量:

*** Settings ***
...
Suite Setup    Prepare Test Run
*** Variables ***
@{KC_Access_Tokens}     # 存储套件所需令牌的列表
@{KC_Tokens_Claims}     # 存储所有令牌声明的列表

*** Keywords ***
Prepare Test Run
    set suite variable    @{KC_Access_Tokens}    token1    token2    token3
    set suite variable    @{KC_Tokens_Claims}    claim1    claim2    claim3

运行套件时,Prepare Test Run已执行且变量初始化正确,但在test_cases1.robot的测试用例中调用如下关键字时,两个列表显示为空:

*** Keywords ***
Check Suite Variables
    log    ${KC_Access_Tokens}
    log    ${KC_Tokens_Claims}

疑问:是否无法在__init__.robot中初始化套件变量?

原因及解决方法

并非不能在__init__.robot里初始化套件变量,问题出在变量作用域上:
Set Suite Variable默认仅将变量绑定在当前套件(即Suite_folder根套件)的作用域内,而service_name作为子套件,默认无法直接访问父套件的变量。

方法1:改用全局变量

如果变量需要在整个测试层级共享,替换Set Suite Variable为Set Global Variable:

Prepare Test Run
    set global variable    @{KC_Access_Tokens}    token1    token2    token3
    set global variable    @{KC_Tokens_Claims}    claim1    claim2    claim3

方法2:子套件中引用父套件变量

保持根套件的Set Suite Variable不变,在子套件中通过${SUITE PARENT}访问父套件变量:

Check Suite Variables
    log    ${SUITE PARENT.KC_Access_Tokens}
    log    ${SUITE PARENT.KC_Tokens_Claims}

方法3:通过变量文件共享

将变量定义在单独的变量文件中,在__init__.robot和所有子套件中导入该文件,实现变量跨套件共享。

内容的提问来源于stack exchange,提问作者juan noguera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:13:12