我正在尝试使用在一个文件中设置的变量并想访问另一个文件中的变量。如何在机器人框架中做到这一点。
目前我的文件test_1.robot有变量
*** Settings ***
Library Collections
*** Test Cases ***
Getting a valid response
Create Http Session rest_session ${service_url}
Set Global Variable ${HEADERS}
现在我想访问另一个文件test_2.robot中的
${HEADERS}
。在 test_2.robot 中,我试图将标题打印到控制台。但是我没有这样的变量${HEADERS}
.
*** Settings ***
Library Collections
*** Test Cases ***
Getting a valid response
Create Http Session rest_session ${service_url}
Log to console ${HEADERS}
有人可以告诉我我错过了什么吗?
在你的例子中
${HEADERS}
变量是空的,如果你想在不同的文件中使用,你需要将它分配给一些东西并在你的文件的*** Variables ***
部分创建变量。
这是使用全局变量的简单方法
您可以使用
Set Global Variable
:
使变量在所有测试和套件中全局可用。
用这个关键字设置的变量在所有测试中都是全局可用的 设置后执行的案例和套件。设置变量 因此,此关键字与从命令创建的效果相同 使用选项 --variable 或 --variablefile 的行。因为这 关键字可以随处更改变量,应谨慎使用。
Set Global Variable ${Header} ${xpath_to_header}
或者你可以使用
Set Suite Variable
:
使变量在当前范围内随处可用 套房。
使用此关键字设置的变量在 当前执行的测试套件的范围。设置变量 因此,此关键字与使用 测试数据文件中的变量表或从变量中导入它们 文件。
可能的子测试套件看不到使用此关键字设置的变量 默认情况下。从Robot Framework 2.9开始,可以控制 通过使用 children= 作为最后一个参数。如果指定 是一个非空字符串或任何其他在 Python,该变量也设置为子套件。父母和 兄弟套房将永远不会看到使用此关键字设置的变量。
变量的名称可以作为普通变量名给出 (例如 ${NAME})或转义格式为 \${NAME} 或 $NAME。多变的 可以使用与创建变量时相同的语法给出值 在变量表中。
如果一个变量已经存在于新范围内,它的值将是 覆盖。否则会创建一个新变量。如果一个变量 当前范围内已经存在,该值可以留空 并且新范围内的变量获取范围内的值 当前范围。
Set Suite Variable ${Header} ${xpath_to_header}
现在您可以在测试用例中使用您的
${Header}
变量。现在您可以按如下方式记录变量
log ${Header}
完整示例:
*** Settings ***
*** Keywords ***
Random Global Variable
${Header}= Set Variable xpath=//div...
set suite variable ${Header}
*** Test Cases ***
Example
log to console ${Header}