如何从机器人框架调用Python方法

Anj*_*ham 5 python robotframework

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

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

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

Bry*_*ley 8

使用评估

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

例子:

在本示例中,我在当前工作目录中创建了一个名为 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
Run Code Online (Sandbox Code Playgroud)

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

*** Test cases ***
Example
    ${result}=  evaluate  EnvVar.getRandomEmails()  modules=EnvVar
    log  result: ${result}
Run Code Online (Sandbox Code Playgroud)

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

$ robot --pythonpath . example.robot  
Run Code Online (Sandbox Code Playgroud)

创建关键词库

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

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

# Util.py
import EnvVar

def get_random_emails():
    return EnvVar.getRandomEmails()
Run Code Online (Sandbox Code Playgroud)

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

*** Settings ***
Library  Util.py

*** Test Cases ***
Example
    ${result}=  Get Random Emails
    log  result: ${result}
Run Code Online (Sandbox Code Playgroud)


JaP*_*PyR 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
Run Code Online (Sandbox Code Playgroud)

显然你应该将设置导入为库