RobotFramework Variables部分的Python方法

时间:2018-06-12 07:44:18

标签: python robotframework

我有一个名为getProperty.py的python文件,因为我只有一个方法!

import configparser

def desiredCapability(platform, key):
    conf= configparser.RawConfigParser()
    if platform.lower() == "android":
      conf.read("somepath")
    elif platform.lower() == "ios":
      conf.read("some path")
    else:
      return None
    strr=conf.get( "main",key)
    return strr    

我有一个机器人文件,我有 变量 部分

***Settings***
 Library   getProperty.py

***Variables***
 ${deviceName}    #Here i want to call the method 

当我试图在该变量部分中调用该方法时,它将作为字符串!我可以毫不费力地在 测试用例 部分调用该方法!但我希望它在 变量 部分!

2 个答案:

答案 0 :(得分:0)

您无法在Variables表格中调用关键字。来自robot framework user guide

  

变量最常见的来源是测试用例文件和资源文件中的变量表。变量表很方便,因为它们允许在与其他测试数据相同的位置创建变量,并且所需的语法非常简单。 它们的主要缺点是值总是字符串而且无法动态创建。如果其中任何一个都有问题,可以使用变量文件。

答案 1 :(得分:0)

在我看来,您希望能够在给定特定变量元素的情况下加载具有特定内容的变量。根据你所选择的方法,这是不可能的,正如@Bryan Oakley所解释的那样。

也就是说,可以拥有可变数据集,我们大多数人每天都会使用它们。用例通常是拥有一组可以针对多个环境运行的测试。每个环境具有不同的URL,凭据和其他属性。

一种方法是使用变量文件从命令行加载一组变量。 Documentation on Variable files提供了几种方法:

  1. 在Python文件中定义Python变量并引用它。
  2. 在YAML变量文件中定义变量。
  3. 在Python类或Python函数中定义变量。
  4. 前两个包含固定变量,最后一个可以接受参数并根据输入返回值。在下面的示例中,我们使用Python函数在给定特定输入的情况下将${name}变量赋予特定值。

    <强> variable_file.py

    def get_variables(platform=None, key=None):
    
        if platform.lower() == "android":
            variables = {'name' : 'android'}
    
        elif platform.lower() == "ios":
            variables = {'name' : 'ios'}
    
        else:
            variables = {'name' : 'No Device'}    
    
        return variables
    

    <强> variable_file.robot

    *** Settings ***
    Variables    ${EXECDIR}/variable_file.py    ios
    
    *** Test Cases ***
    TC
        Log To Console     ${name}
    

    在此示例中,变量文件的引用类似Variables ${EXECDIR}/variable_file.py ios,参数为ios。然后,这会导致${name}变量保持值ios