我在检查列表时遇到问题。实际上,我需要检查一下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}