如何在机器人框架中使用全局变量"get library instance"



我必须定义两个变量 ${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行,我该怎么办?任何帮助将不胜感激。

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

${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}

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

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

正确的形式就像以下内容。因为${p1}在本地存在,因此在调用set suite variable时不需要指定它。

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

最新更新