2017-08-09 38 views
0

早上好,RobotFramework:在RobotFramework

我的RobotFramework文檔,有可能在python直接 (http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#creating-user-keywords

例如在do_nothing函數來創建關鍵字見過定義Python關鍵詞。

def hello(name): 
    print "Hello, %s!" % name 

def do_nothing(): 
    pass 

它工作得很好,但問題是,這已被添加在變量PYTHONPASS,或包含該文件的目錄。

問題是測試可以在多臺計算機上執行,這意味着應該在每臺應該運行測試的計算機上修改此變量。

第二點,不幸的是我的文件將在幾個目錄中使用。

如:

A 
A/B 
A/B/C <== use here 
A/B/D 
A/B/E <== use here 
... 

等的..

是否有可能直接在A級只有一次實例添加功能?

或者是有可能在RobotFramework的部分關鍵詞在A級目錄添加一次,並直接在C和E的機器人文件中引用它:

A/lib.robot: 
*** Keywords *** 
def hello(name): 
    print "Hello, %s!" % name 

def do_nothing(): 
    pass 

C and E: 
*** Settings *** 
Resource ../../A/lib.robot 

回答

4

你不能把基於Python的關鍵字機器人文件。你唯一的選擇是把它放在一個.py文件中。您有兩種選擇來導入該庫:通過文件路徑(例如:Library the_library.py)導入它,或者通過模塊名稱導入它(例如:Library the_library)。

如果使用路徑,路徑可以是相對路徑或絕對路徑。例如,如果您需要在A/B/C和A/B/E中使用該庫,則可以將該文件放入A中,然後將其作爲../../the_library.py引用。

如果您通過模塊名稱導入它,就像使用任何python模塊一樣,它必須位於您的PYTHONPATH中。沒有例外。如果您通過文件名導入它,則必須指定一個實際指向該文件的文件名。這是你唯一的兩個選擇。

最常見的解決方案是將文件放在使用它的所有機器的相同位置。然後,不需要修改任何測試以在不同的機器上工作。這也意味着每臺機器都可以定義PYTHONPATH。

底線非常簡單:您的測試必須提供正確的路徑到庫,或者包含庫的文件夾必須位於PYTHONPATH上。這是唯一的兩個選擇。

這在用戶指南中是完全記錄在題爲Importing LibrariesConfiguring where to search libraries and other extensions

+0

感謝一個部分。解決方案:'Library ../../ lib/MyLibrary.py'工作得很好:) – Totoc1001