【问题标题】:How can we set a variable such that it can be used in a different test suite?我们如何设置一个变量以便它可以在不同的测试套件中使用?
【发布时间】:2020-04-21 15:47:28
【问题描述】:

我需要在 testSuite#1 中设置一个变量。在 testSuite#2 中使用上述变量。

我们是否有任何关键字可以做到这一点?可以在命令行导出吗?

【问题讨论】:

  • 你可以把它从testSuite#1写入一个文件,然后读入testSuite#2

标签: python robotframework


【解决方案1】:

使用 BuiltIn 的 Set Global Variable。应尽可能避免这种情况,但有时是必要的。

Set Global Variable    ${MYPROJ_ADMIN_PASSWORD}    supersecret123

【讨论】:

    【解决方案2】:

    这不是一个好主意,因为最终会导致两个套件之间存在依赖关系,并且依赖于这些套件的运行顺序。

    话虽如此,有几种方法可以实现这一点。

    使用设置全局变量

    第一种方法是使用内置库中的Set Global Variable 关键字。

    | | Set global variable | ${foobar} | this is foobar
    

    设置环境变量

    第二种方法是使用OperatingSystem 库设置一个可以在两个套件之间共享的environment variable

    suite1.robot

    *** Settings ***
    | Library | Operating System
    
    *** Test Case ***
    | Save a variable that other suites can see
    | | Set environment variable | foobar | this is foobar
    

    suite2.robot

    *** Settings ***
    | Library | OperatingSystem
    
    *** Test Cases ***
    | Use a variable from another suite
    | | Should be equal | %{foobar} | this is foobar
    

    注意使用% 而不是$ 来访问变量。您也可以使用Get Environment Variable 来获取一个或多个变量的值。

    【讨论】:

    • 这是个好主意,但我宁愿使用 ombre42 在另一个答案中提到的“全局变量”。环境。变量使变量可用于其他进程,这在我猜这种情况下没有用。
    • @LaurentBristiel:你是对的,尽管它只会让它对测试产生的进程可用。
    【解决方案3】:

    检查下面的代码示例-

    *** Settings ***
    Library     BuiltIn
    
    *** Test Cases ***
    TC1
        .....
        ${test}=    ${temp}
        Set Global Variable      ${test} 
    TC2    
        Log to Console    \n Global variable value is ${test}
    

    参考:https://robotframework.org/robotframework/latest/libraries/BuiltIn.html

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多