我如何用数字检查列表,这是在Robot Framework中以数字排序的



我在检查列表时遇到问题。实际上,我需要检查一下Robot Framework中的列表是否按数字排序。

让我们想象一下,我们有一个列表

${nice}= ['13', '12', '10', '7', '6', '6', '6', '4', '3', '2', '2', '1', '1', '1', '0', '0']

我需要验证第一个元素大于第二个,第二个大于第三个,依此类推

问题是,在Robot Framework中,关键字"排序列表"没有以正确的方式对数字列表进行排序。

其中一个决定是在robot框架中调用Python方法"sort"或"sorted",但也许有更好的方法可以做到这一点?

Sort List关键字将列表排序为字符串,因此它将11放在2之前。

如果必须检查列表是否按数字排序,则可以不进行排序。您应该简单地迭代列表并将相邻的元素相互比较。例如:

*** Variables ***
@{LIST_NOK}     13    12    10    7    6    6    6    4    3    2    2    1    1    1    0    0
@{LIST_OK}     999    765    213     78    21    12   2
*** Test Cases ***
Test
Check List    ${LIST_OK}
Check List    ${LIST_NOK}


*** Keywords ***
Check List
[arguments]    ${list}
${length}=    Get Length    ${list}
FOR     ${i}    IN RANGE    ${length-1}
${first}=    Set Variable    ${list}[${i}]    # element at index i in ${list}
${second}=   Set Variable    ${list}[${i+1}]  # element at index i+1 in ${list}
Run Keyword If    ${first} <= ${second}    Fail    Element ${first} is not greater than ${second}.
END

如果您不喜欢看到这些${list}[${i+1}],因此使用了扩展变量语法,那么您应该使用Python。通过Evaluate关键字或一些小型测试库。

您可以使用python的sorted,使用Evaluate关键字按降序获取列表元素,然后使用Lists Should Be Equal关键字对它们进行比较

Import Library     Collections
@{nice}=    Create List    13    12    10    7    6    6    6    4    3    2    2    1    1    1    0    0                                              
${sorted}=    Evaluate     sorted(${nice}, key=int, reverse=True)                                                                                       
Lists Should Be Equal    ${nice}    ${sorted}   

相关内容

最新更新