假设我在python中有一个类:
class TestClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def print_args(self):
print arg1, arg2
我想使用robotframework
来实现我的测试场景。我想从上面的类创建一个实例并调用它的方法。怎么做?我知道如何导入lib;它应该是这样的:
Library TestClass
我不知道如何从这个类初始化一个对象,并通过这个对象调用类方法。如果我想用python实现它,我会写一些这样的代码:
import TestClass
test = TestClass('ARG1', 'ARG2')
test.print_args()
现在,我想知道如何在robotframework
中写这个。有什么帮助吗?
答案 0 :(得分:15)
要使用参数导入库,只需add them after the library name:
Library TestClass ARG1 ARG2
所以“导入”和实例化一次完成。现在,可能棘手的是了解实例的范围。 “用户指南”部分“Test Library Scope”中详细说明了这一点:
为每个测试用例创建一个新实例。 [...]这是默认设置。
请注意,如果您想使用不同的参数多次导入同一个库,因此您的类具有不同的实例,则必须在导入时命名它们:
Library TestClass ARG1 ARG2 WITH NAME First_lib
Library TestClass ARG3 ARG4 WITH NAME Second_lib
然后在测试中,您必须在关键字前加上:
*** Test Cases ***
MyTest
First_lib.mykeyword foo bar
Second_lib.mykeyword john doe
this section of the User Guide中解释了这一点。
答案 1 :(得分:2)
我已经能够按需实例化python类(即不仅仅是通过库技术进行硬编码的args)。
我使用了一个帮助方法来创建类。我无法让Robot脚本直接调用类构造函数,但是它能够在Python中调用函数,因此我们可以通过提供基于函数的接口来创建类或者命名元素:
File: resource_MakeMyClass.robot
*** Settings ***
Library myClass
*** Keywords ***
_MakeMyClass
[Arguments] ${arg1} ${arg2}
${result} = makeMyClass ${arg1} ${arg2}
[Return] ${result}
-----------------------------------------------------
File: myClass.py
class MyClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def makeMyClass(arg1, arg2):
return MyClass(arg1, arg2)