让我试着以简单的方式说明这一点。
我有两个列表,如下所示:
List1 = [('a', 1, 'low'), ('b', 10, 'high')] # --> Tuples in List
List2 = ["('a', 1, 'low')", "('b', 10, 'high')"] # --> Here the Tuples are actually of Type String.
List1
是SQL查询的输出。 List2
由我定义为预期结果。
我正在使用 Robot Framework 将这两个列表与关键字Lists Should Be Equal
进行比较。但它失败了,因为List2
的字符串看起来像元组。
如何比较这两个列表?我可以将两个列表转换为不同的变量类型,以便我可以比较它们。我试图避免这里的python编码。
答案 0 :(得分:0)
目前尚不清楚您的数据究竟是什么样的,但由于这两个列表的内容不同,您必须将其中一个或两个转换为通用格式。
例如,您可以将第一个列表转换为具有以下内容的字符串:| ${actual}= | Evaluate | [str(x) for x in ${List1}]
我怀疑这能为你提供你所需要的东西,因为它还不清楚你到底需要什么。但是,该技术保持不变:在进行比较之前,使用Evaluate编写一些python代码,将其中一个列表转换为与另一个列表相同的格式。
答案 1 :(得分:0)
这可能是漫长的过程,我使用元组(1,2)代替(a,1,low)#(在python中导致名称错误)。但你告诉它从SQL中获取。重要的是(1,2)和(1,2)#(空间不匹配)
之间的差异var.py
List1 = [(1,2), (3,4)]

test.robot(txt文件)
*** Settings ***
Library BuiltIn
Library Collections
Variables var.py
Library String
*** Variables ***
@{appnd_li}
*** Test Cases ***
TEST
#constructing List2=["(1, 2)","(3, 4)"]
${List2}= Create List (1, 2) (3, 4)
# importing List1 from variable file
${len}= Get Length ${List1}
#initialize empty list
${li}= Create List @{appnd_li}
:FOR ${I} IN RANGE 0 ${len}
\ ${item}= Convert To String ${List1[${I}]}
\ Append To List ${li} ${item}
Lists Should Be Equal ${li} ${List2}
~