Robot Framework类继承

时间:2016-06-21 04:52:44

标签: python robotframework

我有一个如下的父类。

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成为单身人士吗?

2 个答案:

答案 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__的情况下销毁该对象(我认为这可能与机器人库有关)。