如何在Robot Framework中将一个机器人文件中的变量用于另一个机器人文件

时间:2017-08-15 23:50:23

标签: python-2.7 robotframework

这是一个例子 add.robot文件

*** Settings ***
Library   SudsLibrary
Library   XML
Library   String

*** Test Cases ***
Test Webservice

    create Soap Client    http://www.dneonline.com/calculator.asmx?wsdl

    ${add}    Create Wsdl Object   Add
    ${add.intA}    Set Variable    3
    ${add.intB}    Set Variable    4

    # # call soap web service
    call soap method  Add  ${Add}
    ${soap_response}    Get Last Received
    log to console  ${soap_response}
    ${XML_object}=  Parse XML  ${soap_response}
    log    ${XML_object}
    ${result}  get element text  ${XML_object}  .//AddResult
    set global variable  ${result}

substract.robot文件

尝试将结果变量用于此文件但显示错误。 两个文件都存在于同一个文件夹中

*** Settings ***
Library   SudsLibrary
Library   XML
Library   String


*** Test Cases ***
Test Webservice
    create Soap Client    http://www.dneonline.com/calculator.asmx?wsdl

    ${subs}    Create Wsdl Object   Subtract
    ${subs.intA}    Set Variable   ${result} #shows error
    ${subs.intB}    Set Variable    4

    # # call soap web service
    call soap method  Subtract  ${subs}
    ${soap_response}    Get Last Received
    log to console  ${soap_response}
    ${XML_object}=  Parse XML  ${soap_response}
    log    ${XML_object}
    ${result11}=  get element text  ${XML_object}  .//SubtractResult

2 个答案:

答案 0 :(得分:3)

这是使每个文件独立的最佳做法,因此我鼓励您重写测试,以使它们不相互依赖。

全球机器人变量

话虽这么说,如果你想在一个文件中设置一个变量并且能够在另一个文件中使用它,你需要使用内置的关键字Set global variable

来自文档:

  

使用此关键字设置的变量在设置后执行的所有测试用例和套件中全局可用。因此,使用此关键字设置变量与使用选项--variable或--variablefile从命令行创建具有相同的效果。由于此关键字可以在任何地方更改变量,因此应谨慎使用。

您的问题提及var1,但您的代码没有var1。如果您打算写${node}(出现在问题的原始版本中),您可以这样写:

set global variable  ${node}

全球图书馆范围

如果您不是询问机器人变量,而是如何让您的库在套件之间保持变量,则需要将库中的ROBOT_LIBRARY_SCOPE变量设置为{{1} }。例如:

"GLOBAL"

有关详细信息,请参阅Test library scope

答案 1 :(得分:2)

你可以试试这个。 值形式测试1.robot用于测试2.robot

测试1.robot

*** keywords ***
Test1 Webservice
   set global variable  ${node}

测试2.robot

*** Settings ***
Resource Test 1.robot

*** Test Cases ***
Test2 Webservice
  Test 1.Test1Webservice
  ${node1} set Variable ${node}