【问题标题】:Static Variables in Robot FrameworkRobot Framework 中的静态变量
【发布时间】:2019-06-04 04:07:16
【问题描述】:

机器人框架中是否有静态类型的变量?如果是这样,我该如何调用它?还是通过python文件来解决?

我要解决的问题是,我希望一个变量设置一次并让它记住设置的值。不幸的是,这个变量在一个资源文件中(它与我的测试套件文件分开)。

【问题讨论】:

  • 是的,我将变量设置为它开始的时间
  • 那你可以看看我的回答。
  • 您是否要求真正静态的东西,如果您在设置后尝试更改值,机器人会抛出错误?
  • @BryanOakley 这不是我要解决的问题,但很想知道如何实现这样的功能
  • 那么,“静态”你只是在问如何设置一个变量,而不在乎它是不可更改的吗?我只是想理解你所说的“静态”是什么意思。

标签: python static robotframework


【解决方案1】:

是的,您可以在机器人框架中设置静态变量。您的资源文件中应该有类似的内容。

*** Settings ***
...
*** Variables ***
${MyVariable}    MyValue

*** Keywords ***
...

你的测试应该是这样的

*** Settings ***  

Resource    (Path to resource file)

*** Test Cases ***
My Test Case
[Documentation]    This is documentation
My keyword    MyVariable

【讨论】:

    【解决方案2】:

    鉴于以下套件结构:

    /test_folder
        __init__.robot
        variables.resource
        test_s1.robot
        test_s2.robot
        test_s3.robot
    

    现在在您的 variables.resource 文件中,您可以创建和初始化您的变量,例如:

    *** Keywords ***
    Setup Static Variable
        ${my_static}=    Init My Static    # Get time here
        Set Suite Variable    ${my_static}    children=true
    

    在这里,使用Set Suite Variable,您可以使您的变量在当前套件(实际调用此关键字的位置)中可访问,并在所有子套件中使用children=true 选项。这意味着例如文件夹中的所有测试套件文件。


    下一步是创建您的__init__.robot 文件:

    *** Settings ***
    Resource            variables.resource
    Suite Setup         Setup Static Variable
    

    当前套件为test_folder,子套件为test_s1test_s2test_s3${my_static} 将在所有这些中访问。 Setup Static Variable关键字会被执行一次,当执行到test_folder时。


    在您的测试套件文件中,即使不导入资源文件,您也可以使用该变量。

    test_s1.robot:

    *** Test Cases ***
    My First Test
        Log    ${my_static}
    

    如果您的变量是一个常量并且在运行时未计算,@Justin 的答案就是您要寻找的。​​p>

    【讨论】:

    • 感谢 Bence 的回复,我已经尝试了您的解决方案,但似乎不喜欢它。我收到错误消息:“我的第一次测试 | 失败 | 未找到变量 '${my_static}'。”我使用 RIDE 作为我的编辑器,init.robot 文件是否正确?我环顾四周,有人说你不应该在 init 文件中调用资源文件?
    • @WorkerBee 你如何开始测试?在日志文件中,您可以看到已执行的套件设置吗?获得 init.py 后,您必须从该文件夹启动您的套件。因此,在我的示例中,使用以下命令行选项:--suite test_folder.test_s1。关于init文件中的资源文件,我自己就是这样用的,目前没发现有什么问题。我也会环顾四周。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2023-03-16
    • 2017-08-03
    相关资源
    最近更新 更多