通过从字典中获取键并使用.py文件中的值覆盖来创建值列表

时间:2017-11-27 14:50:04

标签: python robotframework

我需要从var1创建一个传递给变量var2env.py的值列表,并在Generic Suite Setup关键字中使用它们,而不会更改{{1}的参数}}

Setup.robot

Generic Suite Setup

env.py

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

test.robot

var1='xyz'
var2='pqr'

3 个答案:

答案 0 :(得分:2)

希望这可以解决您的问题

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值

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

现在${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}