2017-08-04 34 views
0

我想比較Robot Framework中的兩個相同列表。我使用的代碼是:機器人框架集合 - 列表比較問題

List Test 
    Lists Should Be Equal @{List_Of_States_USA} @{List_Of_States_USA-Temp} 

和列表是相同的具有以下值:

@{List_Of_States_USA} Alabama Alaska American Samoa Arizona Arkansas California Colorado 
...    Connecticut Delaware District of Columbia Florida Georgia Guam Hawaii 
...    Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana 
...    Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri 
...    Montana National Nebraska Nevada New Hampshire New Jersey New Mexico 
...    New York North Carolina North Dakota Northern Mariana Islands Ohio Oklahoma Oregon 
...    Pennsylvania Puerto Rico Rhode Island South Carolina South Dakota Tennessee Texas 
...    Utah Vermont Virgin Islands Virginia Washington West Virginia Wisconsin 
...    Wyoming 

此測試失敗,出現以下錯誤:

FAIL Keyword 'Collections.Lists Should Be Equal' expected 2 to 5 arguments, got 114. 

我已搜查SO和其他網站的解決方案,但無法弄清楚爲什麼發生這種情況。預先感謝支持

回答

3

您需要使用$而不是@。當您使用@時,機械手將列表展開爲多個參數。

robot framework user's guide

When a variable is used as a scalar like ${EXAMPLE}, its value will be used as-is. If a variable value is a list or list-like, it is also possible to use as a list variable like @{EXAMPLE}. In this case individual list items are passed in as arguments separately.

考慮的@{foo}的情況下是與價值觀「一」的列表,「二」和「三」。在這樣的情況下,下面的兩個是相同的:

some keyword @{foo} 
some keyword one two three 

你需要你的語句改成這樣:

Lists Should Be Equal ${List_Of_States_USA} ${List_Of_States_USA-Temp} 
+0

非常感謝。它工作 – nhrcpt

+0

嗨布萊恩,請檢查這個問題,並支持我,如果可以的話。 https://stackoverflow.com/questions/45602428/removing-trailing-comma-from-query-result-in-robot-framework。我會很快刪除這條評論 – nhrcpt

0

所以,建議由布萊恩 - 奧克利以上,我修改了測試,如下所示:

${L1} Create List @{List_Of_States_USA} 
${L2} Create List @{List_Of_States_USA-Temp} 
Lists Should Be Equal ${L1} ${L2} 

現在測試通過了。再次感謝@ Brian