【问题标题】:make list of values by getting keys from dictionary and overriding with values from .py file通过从字典中获取键并用 .py 文件中的值覆盖来创建值列表
【发布时间】:2017-11-28 02:25:46
【问题描述】:

我需要列出从env.py 传递给变量var1var2 的值,并在Generic Suite Setup 关键字中使用它们,而不更改给Generic Suite Setup 的参数。

Setup.robot

*** Keywords ***
Generic Suite Setup 
    [Arguments]    &{options}
    ${keys}=   Get Dictionary Keys     ${options}
    ${new1}=   Convert To List    ${keys}
    Log    ${new1}

env.py

var1='xyz'
var2='pqr'

test.robot

*** Settings ***
    Suite Setup    Generic Suite Setup    var1=abc    var2=abc

【问题讨论】:

  • 那么你有什么尝试?会发生什么以及您期望会发生什么?
  • 嗨,我试图从参数/s 中获取键并将它们转换为列表,但无法找到将这个键列表转换为来自 env.py 的值列表的方法跨度>
  • 请展示您编写的代码(仅相关部分)并向我们展示结果是什么以及您期望它是什么。

标签: python robotframework


【解决方案1】:

希望这能解决您的问题

test.robot

*** Settings ***
Resource    Setup.robot
Suite Setup    Generic Suite Setup    var1=abc    var2=abc

*** Test Cases ***
Login

Setup.robot

*** Settings ***
Library    Collections
*** Keywords ***
Generic Suite Setup 
    [Arguments]    &{options}
    ${keys}=   Get Dictionary Keys     ${options}
    ${Values}=  Get Dictionary Values     ${options}  
    ${new1}=   Convert To List    ${keys}
    ${new2}=   Convert To List    ${Values}
    ${list4}=    Create List    ${var1}    ${var2}

    Log    ${new1}
    Log to console    ${new2}
    Log to console    ${list4}  
    :FOR    ${key}    IN    @{new1}
    \    Set suite Variable    ${${key}}    ${${key}}  

env.py

var1='xyz'
var2='pqr'

输出

list4= ['xyz','pqr']

您现在有两个单独的列表,一个来自通用套件设置参数值,另一个来自 env44.py var1,var2 值

【讨论】:

  • 我不能在 setup.robot 中使用 ${list4}= Create List ${var1} ${var2} 因为这些变量名称、值和变量数量会随着每个测试脚本而变化。
【解决方案2】:

这个问题是几个问题合二为一。第一个是声明了未知数量的全局变量。全局变量,由于它们的性质,本质上应该是很少的并且大部分是静态的。这使得它们可以预测并且应该知道它们的存在。

如果您从外部源导入变量,我建议您不要创建单独的全局变量,而是使用 YAML 创建嵌套字典/列表/变量。在这个Stack Overflow answer 中,我展示了一个单个变量导入的示例,然后将其拆分为单独的全局变量。这应该让您可以控制导入的内容。

【讨论】:

    【解决方案3】:

    现在 ${userlist} 记录为 ['xyz', 'pqr'] 并在 setup.robot 中进行了以下更改

    Setup.robot

    *** Settings ***
    Library    Collections
    
    *** Keywords ***
    Generic Suite Setup 
        ${keys}=   Get Dictionary Keys     ${options}
        ${new1}=   Convert To List    ${keys}
        @{userlist}=    Create list
        :FOR    ${key}    IN    @{new1}
        \    Set suite Variable    ${${key}}    ${${key}}
        \    Append To List    ${userlist}    ${${key}}
        Log    ${userlist}
    

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多