【问题标题】:How to call a python method from robot framework如何从机器人框架调用python方法
【发布时间】:2019-05-10 11:10:26
【问题描述】:

我需要从机器人框架中调用一个 python 方法。

def getRandomEmails():
    a = ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range(16))
    email = a + '@' + 'gmail.com'
    return email

这个函数写在EnvVar.py文件中 如何在 Robot Framework 中使用此方法的返回值。我尝试了几乎很多方法,但没有任何效果。 请帮忙。

【问题讨论】:

  • EnvVar.py 是否打算成为关键字库?或者,您只是想从模块中挑选一个功能来运行?
  • 那个python文件中有很多方法,我只是想从EnvVar.py中调用一个方法

标签: python robotframework


【解决方案1】:

使用评估

具体如何在您的系统上执行此操作取决于您的文件的组织方式以及您如何配置机器人,但简而言之,BuiltIn 库中的Evaluate 是允许您从可导入模块运行任意方法的关键字。

例子:

对于这个例子,我在当前工作目录中创建了一个名为 EnvVar.py 的文件。内容如下:

import random, string

def getRandomEmails():
    a = ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range(16))
    email = a + '@' + 'gmail.com'
    return email

然后我创建了一个名为“example.robot”的文件,如下所示:

*** Test cases ***
Example
    ${result}=  evaluate  EnvVar.getRandomEmails()  modules=EnvVar
    log  result: ${result}

由于当前工作目录默认不在我的 PYTHONPATH 上(您的设置可能不同),我必须告诉机器人将当前目录包含在 PYTHONPATH 上。我可以使用--pythonpath 选项来做到这一点。

$ robot --pythonpath . example.robot  

创建关键字库

另一种解决方案是创建自己的关键字库,将此函数作为关键字公开。

例如,假设您可以导入 EnvVar,您可以编写一个名为“Util”(Util.py) 的库,该库创建一个调用此函数的关键字:

# Util.py
import EnvVar

def get_random_emails():
    return EnvVar.getRandomEmails()

然后您可以像使用任何其他关键字库一样在测试中使用它:

*** Settings ***
Library  Util.py

*** Test Cases ***
Example
    ${result}=  Get Random Emails
    log  result: ${result}

【讨论】:

    【解决方案2】:

    如果这是您要添加的唯一方法,则可以添加 keyword 装饰器,即:

    from robot.api.deco import keyword
    
    @keyword
    def getRandomEmails():
        a = ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range(16))
        email = a + '@' + 'gmail.com'
        return email
    

    显然你应该在设置中作为库导入

    【讨论】:

    • 其实EnvVar.py文件中有很多方法。我只需要使用一种没有参数的方法。
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多