2016-09-23 53 views
0

我正在使用機器人框架在原生android應用程序的對象列表中查找字符串。我的輸入到自定義關鍵字是:Robot Framework:無效的參數說明:只有最後一個參數可以是kwargs

${Test_Result}= RUN KEYWORD AND CONTINUE ON FAILURE VERIFY STRING IN LIST My Name &{main_locator} &{list_locator} 

在我的關鍵字,我已經使用了一種叫做

VERIFY STRING IN LIST 
    [Arguments] ${String} &{main_locator} &{list_locator} 
    ${relative_object}=GET RELATIVE OBJECT &{main locator} &{list_locator} <position> 

位置關鍵字描述是否第二本下方或所述第一對象上方的對象。

現在,我會發現在水平列表,

${result}= Scroll To Horizontally ${relative_object} text=${sring} 

所需的文字。當我執行測試用例它顯示了以下錯誤

Creating keyword 'VERIFY STRING IN LIST' failed: Invalid argument specification: Only last argument can be kwargs. 

可有人告訴我這是爲什麼錯誤來?我試過調試但沒有結果。

回答

0

這可能與運行關鍵字並繼續失敗關鍵字您正在使用。 Robot Framework的用戶指南說,這在Running keywords

動態庫也具有爲了執行其關鍵字特殊run_keyword(化名runKeyword)方法 。當動態庫中的關鍵字是 在測試數據中使用時,Robot Framework使用庫的run_keyword 方法來執行它。該方法需要兩個或三個參數。 第一個參數是一個包含關鍵字 的字符串的字符串,其格式與get_keyword_names返回的格式相同。 第二個參數是測試數據中關鍵字 的參數列表或數組參數。

可選的第三個參數是一個字典(Java中的地圖),它獲取 傳遞給關鍵字的可能的免費關鍵字參數(** kwargs)。請參閱 有關動態庫的免費關鍵字參數部分以獲取更多詳細信息 關於將kwargs與動態測試庫結合使用。

這實際上意味着你不能只是通過什麼關鍵字,你與運行關鍵字後

您參數的關鍵字名來運行是一個字符串和兩個字典,當機器人框架期待包含列表一個字符串和兩個字典。

下面是一個簡單的測試,我試過了,這是否幫助你:

*** Variables *** 
&{main_locator} cat=kissa dog=koira 
&{list_locator} foo=bar baz=blaah 

*** Test Cases *** 
SO 
    ${parameter_list}= Create List My Name ${main_locator} ${list_locator} 
    Log     ${parameter_list} 
    ${Test_Result}=  RUN KEYWORD AND CONTINUE ON FAILURE VERIFY STRING IN LIST @{parameter_list} 

*** Keywords *** 
VERIFY STRING IN LIST 
    [Arguments] ${String} ${main_locator} ${list_locator} 
    Log ${String} 
    Log ${main_locator} 
    Log ${list_locator} 
0

[參數] $ {字符串} & {main_locator} & {list_locator}

的&爲一個論點將它視爲** args,就像

def verify_string_in_list(string, **main_locator, **list_locator): 

你只需要通過他們與$

[參數] $ {字符串} $ {main_locator} $ {} list_locator

${Test_Result}= RUN KEYWORD AND CONTINUE ON FAILURE VERIFY STRING IN LIST My Name ${main_locator} ${list_locator} 

應該正常工作。他們仍然會被視爲口號。

相關問題