如何在机器人框架中使用带有全局变量的“获取库实例”

时间:2018-12-18 12:17:26

标签: robotframework

我必须定义两个变量${p1}${p2},它们的作用域应该是全局的,这意味着它们可以在单个测试套件中的各种奶嘴情况下使用。

当我在测试用例中进行以下活动时,它工作正常:

${p1}= GET LIBRARY INSTANCE    P1

${p2}= GET LIBRARY INSTANCE    P2

但是当我将p1和p2分配为全局时,我无法获得预期的结果:

set Suite Variable ${p1}= GET LIBRARY INSTANCE    P1

set Suite Variable ${p2}= GET LIBRARY INSTANCE    P2

我不想在所有测试用例中都写${p1}= GET LIBRARY INSTANCE P1行,该怎么办?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您应该定义一个Suite Setup,您可以在其中设置整个套件的变量。您应该首先获取您的库实例,然后将这些变量设置为套件变量,如example所示。

${ID} =   Get ID      
Set Suite Variable    ${ID}

在您的情况下,它看起来应该像这样:

*** Settings ***
Suite Setup    Setup Global Variables

*** Keywords ***
Setup Global Variables
    ${p1}=    GET LIBRARY INSTANCE    P1
    ${p2}=    GET LIBRARY INSTANCE    P2
    Set Suite Variable    ${p1}
    Set Suite Variable    ${p2}

*** Test Cases ***
Test CaseA
    Log   ${p1}
    Log   ${p2}

Test CaseB
    Log   ${p1}
    Log   ${p2}

请注意,这些变量只能在此套件文件中访问。

答案 1 :(得分:2)

您使用的语法无效。 Set suite variable的文档说,它使用变量名作为第一个参数,并使用一个或多个值(不是关键字)作为后继参数。您将字符串${p1}= GET LIBRARY INSTANCE作为变量名,并将字符串P1作为值。

正确的格式如下。由于${p1}在本地存在,因此在调用set suite variable时无需指定它。

${p1}=  GET LIBRARY INSTANCE    P1
set Suite Variable  ${p1}