机器人框架:列表应该是空值的相等问题:"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 值或类似的东西。
这里的问题是我正在比较来自不同位置的两个列表。一个列表来自 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 值或类似的东西。