【问题标题】:Why is the value of a suite variable lost after importing it from a resource file?为什么从资源文件中导入套件变量的值会丢失?
【发布时间】:2015-03-20 12:29:29
【问题描述】:

根据我在robotframework doc 中读到的关于变量范围和导入资源文件的内容,我希望这可以工作(python 2.7,RF 2.8.7):

测试文件:

*** Settings *** 
Resource          VarRes.txt 
Suite Setup       Preconditions

*** Variables ***

*** Test Cases ***
VarDemo
    Log To Console    imported [${TODAY}]

*** Keywords *** 

资源文件:

*** Settings ***
Library           DateTime

*** Variables ***
${TODAY}          ${EMPTY}    # Initialised during setup, see keyword Preconditions

*** Keywords ***
Format Local Date
    [Arguments]    ${inc}    ${format}    
    ${date} =    Get Current Date    time_zone=local    increment=${inc} day    result_format=${format}
    [Return]    ${date}    # formatted date

Preconditions
    ${TODAY} =   Format Local Date    0    %Y-%m-%d
    Log To Console    inited [${TODAY}]

但是输出是:

inited [2015-03-20]
imported []

RF 文档说明:

测试套件范围内的变量在测试中的任何位置都可用 或导入的套件。它们可以在 变量表,从资源中导入和 ....

我认为这里已经完成了。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    如果我像这样在关键字前提条件中添加一行,它会起作用:

    Preconditions
        ${TODAY} =   Format Local Date    0    %Y-%m-%d
        Set Suite Variable  ${TODAY}
        Log To Console    inited [${TODAY}]
    

    原因是在第一行定义了一个局部变量,而不是初始化变量表中声明的测试套件变量。 RF 文档中的一段暗示了这一点:

    在测试执行期间使用返回值设置的变量 来自关键字或始终使用 Set Test/Suite/Global Variable 关键字 覆盖设置范围内可能存在的变量

    我认为RF的一个主要缺点是您不能在变量表中动态定义变量。我尽量避免在关键字中设置变量的范围。

    【讨论】:

      【解决方案2】:

      对于动态变量,您可以在 Python 中使用变量文件。请参阅"Implementing variable file as Python or Java class" in the User Guide 部分。

      例如,我使用 variables.py :

      if platform.system() in ['Darwin', 'Linux']:
          OS_FAMILY = 'unix'
      elif platform.system() == 'Windows':
          OS_FAMILY = 'windows'
      else:
          OS_FAMILY = 'unknown'
      OS_FAMILY_IS_UNIX = OS_FAMILY == 'unix'      
      OS_FAMILY_IS_WINDOWS = OS_FAMILY == 'windows'   
      

      然后在机器人测试中,我可以在任何地方使用动态变量 ${OS_FAMILY}、${OS_FAMILY_IS_UNIX} 和 ${OS_FAMILY_IS_WINDOWS}。

      您应该能够创建您的 ${TODAY} 变量。

      【讨论】:

        猜你喜欢
        • 2013-02-17
        • 1970-01-01
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 1970-01-01
        • 2020-12-19
        相关资源
        最近更新 更多