使用RF比较由元组组成的列表

时间:2015-06-24 10:20:13

标签: python-2.7 tuples robotframework

让我试着以简单的方式说明这一点。

我有两个列表,如下所示:

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编码。

2 个答案:

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