如何使用python在机器人框架中导入和使用用户定义的类

Zei*_*zar 11 python testing robotframework

假设我在python中有一个类:

class TestClass(object):
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

    def print_args(self):
        print arg1, arg2
Run Code Online (Sandbox Code Playgroud)

我想用来robotframework实现我的测试场景.我想从上面的类创建一个实例并调用它的方法.怎么做?我知道如何导入lib; 它应该是这样的:

Library   TestClass
Run Code Online (Sandbox Code Playgroud)

我不知道如何从这个类初始化一个对象,并通过这个对象调用类方法.如果我想用python实现它,我会写一些像这样的代码:

import TestClass
test = TestClass('ARG1', 'ARG2')
test.print_args()
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何写这个robotframework.有帮助吗?

Lau*_*iel 16

要使用参数导入库,只需在库名称后添加它们:

Library  TestClass  ARG1  ARG2
Run Code Online (Sandbox Code Playgroud)

因此,"导入"和实例化一次完成.现在,可能棘手的是了解实例的范围.用户指南" 测试库范围 " 部分对此进行了详细说明:

为每个测试用例创建一个新实例.[...]这是默认值.

需要注意的是,如果你想使用不同的参数导入相同的库几次,因此对你的类的实例差别,你就会有他们的名字上输入:

Library  TestClass  ARG1  ARG2  WITH NAME  First_lib
Library  TestClass  ARG3  ARG4  WITH NAME  Second_lib
Run Code Online (Sandbox Code Playgroud)

然后在测试中,您必须为关键字添加前缀:

*** Test Cases ***
MyTest
    First_lib.mykeyword  foo  bar
    Second_lib.mykeyword  john  doe
Run Code Online (Sandbox Code Playgroud)

这是在说明用户指南的这一部分.

  • 实际上你可以拥有多个实例.我编辑了我的答案以解决这一问题. (2认同)

小智 5

我已经能够按需实例化 python 类(即不仅仅是通过库技术进行硬编码的参数)。

我使用了一个辅助方法来创建这个类。我无法让 Robot 脚本直接调用类构造函数,但是它可以在 Python 中调用函数,因此我们可以通过提供基于函数的接口来创建类或命名元组:

文件:resource_MakeMyClass.robot

*** Settings ***
Library             myClass

*** Keywords ***
_MakeMyClass
    [Arguments]    ${arg1}    ${arg2}
    ${result} =    makeMyClass    ${arg1}    ${arg2}
    [Return]       ${result}
Run Code Online (Sandbox Code Playgroud)

文件:myClass.py

class MyClass(object):
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

def makeMyClass(arg1, arg2):
    return MyClass(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)