Robot Framework自定義測試庫導入方法 -- Robot Framework


 1. 測試庫放在python的site-packages 路徑下

一般我們自己寫的測試庫會放在 python的site-packages 路徑下,其他第三方庫自動安裝的也都在這個目錄中,這樣在導入庫的時候,會自動識別。

  • 在python安裝目錄下的 Lib\site-packages 目錄下 新建一個目錄,目錄名就是庫名,如 NewLibrary
  • 在新建的NewLibrary目錄下創建一個python文件,任何合法的文件名即可,擴展名為py。如:myclass.py

其內容如下

復制代碼
class MyClass(object):
    def __init__(self):
        pass
 
    def printMsg(self,msg):
        print "hello "+msg
復制代碼

上面代碼定義了一個python類,其中除構造方法 _init_ 外,還定義了一個printMsg方法,該方法其實就是rf中的關鍵字,可以直接在rf中使用。下面我們介紹。

  • 在新建的NewLibrary目錄下創建 __init__.py 文件,文件名必須固定這樣。該文件的功能,就是把關鍵字類暴露出來,讓rf能知道。

其內容如下:

from myclass import MyClass

class NewLibrary(MyClass):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
  • 通過前面三個步驟,一個最簡單的自定義的NewLibrary庫就創建好了,在rf工具中就可以使用了
    • 先要導入 NewLibrary 庫
    • 使用關鍵字printMsg。需要說明的是,在rf中引用時,既可以寫成 printMsg,也可寫成 print msg。一般習慣用空格把單詞分開。因為rf關鍵字不區分大小寫。
*** Test Cases ***
successsd
    print msg    god
    printMsg    ss
    printmsg    yy
  • 增加新的關鍵字

增加新的關鍵字很簡單,只需在MyClass類中增加新的方法即可。如:

復制代碼
class MyClass(object):
    def __init__(self):
        pass
 
    def printMsg(self,msg):
        print "hello "+msg
        
    def join_info(self,a,b):
        print a+b
復制代碼

上面介紹了最簡單的自定義模塊,雖然簡單,但實際可以滿足大部分自己開發的需求

2. 把自定義的庫放在項目的Library目錄

第一種方法有個不好的地方,就是庫與項目目錄分離,若我想把自定義的庫放在項目的Library目錄中,直接Import就會報failed,找不到這個庫。

找官方文檔,里面給出了具體原因:
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#module-search-path
python有個模塊搜索路徑,可以自己sys.path看下:

如圖,可以看到,里面包含了site-packages路徑,所以在這個目錄下的庫是在python的模塊搜索路徑下的。

所以,后面的思路就明確了,把自己項目的路徑添加到python的模塊搜索路徑下,具體有幾種方法可以實現:

  • 命令添加path路徑
 
           
import sys
sys.path.append(r'/CODE/robotlib/')  # 這里append函數里的字符串就是你寫的庫文件的路徑
  • 在site-packages目錄下面新建一個.pth 文件(以pth作為后綴名) ,將模塊的路徑寫進去,可以發現,有些第三方庫也有這個.pth文件,可以作為參考。

添加后,再次sys.path看下:

自定義的目錄已經在python的模塊搜索路徑下了

請確保庫的文件名和CLASS名一致,這樣 import 庫名的時候,可以省略.py后綴

注意,這里還有個問題,如果我的庫文件不在模塊搜索路徑下,是在該路徑的子路徑下面,那其實直接import還是會搜索不到,這時加上相對路徑即可

Library               base_library/Tools.py  #加路徑后,需加上.py后綴


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM