我想在Robot Framework中比较两个相同的列表。我正在使用的代码是:
ID Year YearWeek Week ID1 (No column name)
479474 2017 201718 18 479474 201718
479474 2017 201719 19 NULL 201718
479474 2017 201720 20 NULL 201718
479474 2017 201721 21 479474 201721
479474 2017 201722 22 NULL 201721
479474 2017 201723 23 479474 201723
479474 2017 201724 24 479474 201724
并且列表与以下值相同:
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
我搜索了SO和其他网站的解决方案,但无法弄清楚为什么会发生这种情况。在此先感谢您的支持
答案 0 :(得分:3)
您需要使用$
而不是@
。当您使用@
时,robot会将列表扩展为多个参数。
来自robot framework user's guide:
当变量用作$ {EXAMPLE}之类的标量时,其值将按原样使用。如果变量值是列表或类似列表,则也可以使用像@ {EXAMPLE}这样的列表变量。 在这种情况下,单独的列表项将作为参数单独传递。
考虑@{foo}
是具有值“一”,“二”和“三”的列表的情况。在这种情况下,以下两个是相同的:
some keyword @{foo}
some keyword one two three
您需要将声明更改为:
Lists Should Be Equal ${List_Of_States_USA} ${List_Of_States_USA-Temp}
答案 1 :(得分:0)
所以,正如上面的Bryan-Oakley所说,我修改了测试如下:
${L1} Create List @{List_Of_States_USA}
${L2} Create List @{List_Of_States_USA-Temp}
Lists Should Be Equal ${L1} ${L2}
现在测试通过了。再次感谢@ Brian