1. 程式人生 > 其它 >Robot Framework自定義測試庫匯入方法 -- Robot Framework

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

技術標籤:python

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字尾