Robot FrameWork集合 - 列表比较问题

时间:2017-08-04 17:55:17

标签: python python-2.7 collections robotframework

我想在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和其他网站的解决方案,但无法弄清楚为什么会发生这种情况。在此先感谢您的支持

2 个答案:

答案 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