【问题标题】:storing python variable and its value as dictionary in robotframework将python变量及其值作为字典存储在robotframework中
【发布时间】:2018-01-10 12:33:00
【问题描述】:

我有python文件,它必须用作变量文件,即-V

文件内容是

Volte_user_01='samsung'
Volte_user_02='HTC'
cs_test='Vivo'

我正在尝试找到一种方法,可以将所有具有 'user' 文本的变量存储在机器人框架的字典中的变量名中。

所以机器人框架工作中的字典就像

${Phones} = {Volte_user_01:'samsung', Volte_user_02: 'HTC'}

我浏览了文档,但理解起来有点复杂

任何帮助将不胜感激

【问题讨论】:

  • 您不能调用字典中的键变量 (how it's done here)。默认 Python 字典中不提供具有相同名称的键。
  • 那是一个错字..现在更正
  • 是否有理由不在变量文件本身中执行此操作?
  • 您可能希望将这些变量存储在配置文件中,并在运行测试时将它们作为参数传递给您的 python 对象。 ${..} 语法通常仅用于机器人测试用例中的运行时变量。
  • @BryanOakley 这是一个要求,参数需要从python文件作为标量数据类型传递

标签: python robotframework


【解决方案1】:

我怀疑有更好的方法来解决您要解决的问题,但这里是您问题的字面答案。

Robot 有一个名为 get variables 的关键字,它返回所有已知机器人变量的字典。 Robot 还有一个名为evaluate 的关键字,可以让您运行任意python 代码。在该代码中,您可以使用特殊语法$varname 来引用机器人变量。

使用这些关键字,您可以创建一个词典理解,为您创建一个新词典。

在以下示例中,使用原始问题中的数据,关键字 Get user variables 将返回如下所示的字典:

{
    'Volte_user_1': samsung, 
    'Volte_user_02': HTC
}

请注意,如果您有其他变量名称中包含字符串“user”,它们也会显示在列表中。

*** Keywords ***
Get user variables
    [Documentation] 
    ...  Return a dictionary of key/value pairs where the keys
    ...  are all robot variables that have _user_ as part of 
    ...  their name. 
    ${vars}=  get variables
    ${user variables}=  evaluate
    ...  {name[2:-1]:value for (name,value) in $vars.items() if "_user_" in name}
    [Return]  ${user variables}    

*** Test Cases ***
Example
    ${phones}=  get user variables
    should be equal  ${phones['Volte_user_01']}  samsung
    should be equal  ${phones['Volte_user_02']}  HTC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多