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看下:
請確保庫的文件名和CLASS名一致,這樣 import 庫名的時候,可以省略.py后綴
注意,這里還有個問題,如果我的庫文件不在模塊搜索路徑下,是在該路徑的子路徑下面,那其實直接import還是會搜索不到,這時加上相對路徑即可
Library base_library/Tools.py #加路徑后,需加上.py后綴