如何从robot框架调用python方法

如何从robot框架调用python方法,python,robotframework,Python,Robotframework,我需要从robot框架调用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框架中使用此方法返回的值。我尝试了很多方法,但都不管用。 请提供帮助

我需要从robot框架调用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框架中使用此方法返回的值。我尝试了很多方法,但都不管用。
请提供帮助。

如果这是您想要添加的唯一方法,那么您可以添加
关键字
装饰器,即:

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
显然,您应该使用Evaluate在设置中作为库导入 具体如何在系统上执行此操作取决于文件的组织方式和配置robot的方式,但简而言之,“来自内置库”是允许您从可导入模块运行任意方法的关键字

例如:

对于本例,我在当前工作目录中创建了一个名为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上(您的设置可能不同),因此我必须告诉robot在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}

EnvVar.py
是否打算成为关键字库?或者,您只是想从模块中选择一个函数来运行吗?该python文件中有许多方法。我只想从EnvVar.py调用一个方法实际上EnvVar.py文件中有许多方法。我只需要使用一个没有参数的方法。