如何在机器人框架中访问全局变量

时间:2018-10-16 09:49:37

标签: robotframework

我正在尝试使用在一个文件中设置的变量,并希望访问另一个文件中的变量。如何在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}

有人可以告诉我我想念什么吗?

1 个答案:

答案 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}