机器人框架:列表应该是空值的相等问题:"None" 和 ''

Robot framework: Lists should be equal problem with empty values: "None" and ''

这里的问题是我正在比较来自不同位置的两个列表。一个列表来自 excel,另一个列表来自特定的 table,它表示相同 excel 值的导入值。 所以所有的值都是正确的;但是 excel 给出了一个或可能更多的值,它们是“none”,而从 table 我得到的这些值只有空值作为星号 ''。如何将“None”更改为“”,反之亦然? 在这种特殊情况下,“None”和“”位于列表中的第 10 个值槽中,但随着时间的推移它可能会发生变化,因为不同的值被放入 excel.
那么我如何删除或 replace/modify 这些“nones”到 '':s 或反之亦然?

Excel 列表:[1, 'X', 'Y', 200, 1999, 'Z', 'W', 4, 'V' , None, 2, 1100] Table 列表:[1, 'X', 'Y', 200, 1999, 'Z', 'W', 4, 'V', '', 2 , 1100]

使用Excel库和Excel机器人来混合关键字..下面是类似的方法

${iTotalRows} =   Get Row Count    Sheet1 (etc.) # excel

${item1} =      Get Table cell     //table[@class="xx"]    2        1
${item1} =      Get Table cell     //table[@class="xx"]    2        2 #etc..
Lists should be equal       ${x}       ${y}

提前致谢

我认为没有为此准备好的关键字(例如在 Collections 库中)。如果我错了,我正在重新发明轮子,请告诉我,我可以编辑或删除我的答案。

我会在 Python 中创建自定义关键字并将其作为库导入 RF。这可以在 Python 中轻松完成(实际上是一行),因此创建它甚至不需要太多时间或精力。

Libraries/ListUtils.py:

def substitute_values_in_list(list, value_to_substitute, substitute_to):
    return [substitute_to if ele == value_to_substitute else ele for ele in list]

然后在测试或关键字中:

*** Settings ***
Library    ../Libraries/ListUtils.py    

*** Test Cases *** 
Empty List Value
    ${list}=    Create List    1    2    ${None}
    Log To Console    ${list}
    ${new_list}=    Substitute Values In List    ${list}    ${None}    ${Empty}
    Log To Console    ${new_list}  

第一个控制台输出将是:

['1', '2', None]

第二个替换值:

['1', '2', '']

您可以用另一种方式参数化自定义关键字 Substitute Values In List,这样您就可以用空字符串替换 None 值或类似的东西。