我有一个如下的父类。
class ABC (object):
def __init__:
//Do something
def __del__():
//Cleanup what you did
测试套件是ABC的子类。
Class A(ABC):
def __init__():
Class B(ABC):
def __init__():
然而,当我执行pybot -i A.robot B.robot时。 ABC被创建和销毁,然后再次创建和销毁。如何在任何测试用例和ABC析构函数调用结束之前调用ABC构造函数一次?
我不想使用 init .robot ,因为我不想与框架捆绑在一起。其中一个要求是能够将代码插入RBF并仍然使用它。
我可以让ABC成为单身人士吗?
答案 0 :(得分:0)
我不确定我明白你想做什么,看起来你想要覆盖的东西多于使用单身。
如果您实例化2个物体,您将启动2个父母。
a = A() # ABC 1
b = B() # ABC 2
但也许你想要的是这样的:
abc = ABC()
a = A()
a.ABC = abc
b = B()
b.ABC = abc
或将__init__()
更改为__init__(abc)
abc = ABC()
a = A(abc)
b = B(abc)
答案 1 :(得分:0)
正如所写,你提出的问题没有多大意义,因为你无法在python中编写测试套件。我猜你会问关键字库。
如果希望在执行套件时将关键字库实例化一次,并在所有测试运行后销毁,则需要设置库范围。来自library scope上的用户指南部分:
测试库可以控制何时使用类创建新库 属性ROBOT_LIBRARY_SCOPE。该属性必须是字符串和它 可以有以下三个值:
TEST CASE 为每个测试用例创建一个新实例。可能的套件设置和套件拆解共享另一个实例。 这是默认值。
TEST SUITE 为每个测试套件创建一个新实例。最低级别的测试套件,从测试用例文件创建并包含 测试用例,拥有自己的实例,以及更高级别的套件 得到他们自己的实例可能的设置和拆解。
GLOBAL 在整个测试执行期间只创建一个实例,并由所有测试用例和测试套件共享。 从模块创建的库始终是全局的。
以下是基于类的关键字库的示例:
class ExampleLibrary:
ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
def __init__(self):
// do something
def __del__(self):
// do something
重要:python不保证__del__
方法运行。如果在解释器退出之前销毁了示例库,则可能会在不调用__del__
的情况下销毁该对象(我认为这可能与机器人库有关)。