繁体   English   中英

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

[英]How to call a python method from robot framework

我需要从机器人框架调用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的文件。 它具有以下内容:

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}

如果这是您要添加的唯一方法,则可以添加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

显然,您应该将设置导入为库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM