Python 通过从字典中获取键并使用.py文件中的值进行重写来创建值列表

Python 通过从字典中获取键并使用.py文件中的值进行重写来创建值列表,python,robotframework,Python,Robotframework,我需要创建一个从env.py传递给变量var1和var2的值列表,并在Generic Suite Setup关键字中使用它们,而不改变Generic Suite Setup的参数 设置。机器人 *** Keywords *** Generic Suite Setup [Arguments] &{options} ${keys}= Get Dictionary Keys ${options} ${new1}= Convert To List

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

设置。机器人

*** Keywords ***
Generic Suite Setup 
    [Arguments]    &{options}
    ${keys}=   Get Dictionary Keys     ${options}
    ${new1}=   Convert To List    ${keys}
    Log    ${new1}
*** 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}
env.py

var1='xyz'
var2='pqr'
测试机器人

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

希望这能解决你的问题

测试机器人

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

*** Test Cases ***
Login
安装机器人

*** 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}}  
环境保护

var1='xyz'
var2='pqr'
输出

list4= ['xyz','pqr']

您现在有两个单独的列表,一个来自通用套件设置参数值,另一个来自env44.py var1,var2值希望这能解决您的问题

测试机器人

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

*** Test Cases ***
Login
安装机器人

*** 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}}  
环境保护

var1='xyz'
var2='pqr'
输出

list4= ['xyz','pqr']

现在有两个单独的列表,一个来自通用套件设置参数值,另一个来自env44.py var1,var2 values。这个问题包含了几个问题。第一个是声明了未知数量的全局变量。全局变量,由于其性质,在本质上应该是很少的,并且大部分是静态的。这使得它们可以预测,并且应该知道它们的存在


如果从外部源导入变量,我建议不要创建单个全局变量,而是使用YAML创建嵌套的字典/列表/变量。在本文中,我给出了一个单个变量导入的示例,然后将其拆分为单独的全局变量。这将为您提供对导入内容的控制。

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


如果从外部源导入变量,我建议不要创建单个全局变量,而是使用YAML创建嵌套的字典/列表/变量。在本文中,我给出了一个单个变量导入的示例,然后将其拆分为单独的全局变量。这将为您提供对导入内容的控制。

现在
${userlist}
将日志记录为
['xyz','pqr']
,并在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}}  
设置。机器人

*** Keywords ***
Generic Suite Setup 
    [Arguments]    &{options}
    ${keys}=   Get Dictionary Keys     ${options}
    ${new1}=   Convert To List    ${keys}
    Log    ${new1}
*** 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}

现在
${userlist}
记录为
['xyz','pqr']
,并在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}}  
设置。机器人

*** Keywords ***
Generic Suite Setup 
    [Arguments]    &{options}
    ${keys}=   Get Dictionary Keys     ${options}
    ${new1}=   Convert To List    ${keys}
    Log    ${new1}
*** 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}

你试过什么?发生了什么,您希望发生什么?您好,我试图从参数中获取键并将其转换为列表,但无法找到将此键列表转换为来自env.py的值列表的方法。请显示您编写的代码(仅相关部分)让我们看看结果是什么,你期望它是什么。那么你尝试了什么?发生了什么,您希望发生什么?您好,我试图从参数中获取键并将其转换为列表,但无法找到将此键列表转换为来自env.py的值列表的方法。请显示您编写的代码(仅相关部分)我不能在setup.robot中使用${list4}=Create List${var1}${var2},因为这些变量名、值和变量数量随着每个测试脚本的变化而变化。我不能在setup.robot中使用${list4}=Create List${var1}${var2},因为这些变量名,每个测试脚本的值和变量数都在变化。