我正在尝试使用在一个文件中设置的变量,并希望访问另一个文件中的变量。如何在Robot框架中进行操作。
当前我的文件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}
有人可以告诉我我想念什么吗?
答案 0 :(得分:0)
在您的示例${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}