我需要从机器人框架调用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中使用此方法返回的值。我尝试了很多方法,但是没有任何效果。 请帮忙。
答案 0 :(得分:3)
在系统上的确切执行方式取决于文件的组织方式和配置机器人的方式,但是简而言之,BuiltIn库中的Evaluate是使您可以从importable中运行任意方法的关键字模块。
示例:
在此示例中,我在当前工作目录中创建了一个名为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}
答案 1 :(得分: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
显然,您应该将设置作为库导入