簡體   English   中英

Robot Framework類繼承

[英]Robot Framework class inheritance

我有一個如下的家長班。

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個父對象。

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)

如您所寫,您的問題沒有多大意義,因為您無法使用python編寫測試套件。 我猜你在問關鍵字庫。

如果希望在執行套件時實例化一次關鍵字庫,並在運行所有測試后銷毀該關鍵字庫,則需要設置庫范圍。 庫范圍的用戶指南部分:

測試庫可以控制何時使用類屬性ROBOT_LIBRARY_SCOPE創建新庫。 該屬性必須是字符串,並且可以具有以下三個值:

測試案例為每個測試案例創建一個新實例。 可能的套件設置和套件拆卸共享另一個實例。 這是默認值。

測試套件的新實例為每個測試套件創建。 從測試用例文件創建並包含測試用例的最低級別的測試套件具有自己的實例,而更高級別的套件都為可能的設置和拆卸而擁有自己的實例。

GLOBAL在整個測試執行過程中,僅創建一個實例,並且所有測試用例和測試套件都共享該實例。 從模塊創建的庫始終是全局的。

這是一個基於類的關鍵字庫的示例:

class ExampleLibrary:

    ROBOT_LIBRARY_SCOPE = 'TEST SUITE'

    def __init__(self):
        // do something

    def __del__(self):
        // do something

重要提示 :python不保證__del__方法可以運行。 如果示例庫在解釋器退出之前就被銷毀,則可能會在不調用__del__情況下銷毀該對象(我認為對於機器人庫可能是正確的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM