如何在机器人框架中转换查询结果

How to convert the result of a query in Robot Framework

提问人:Natalia G 提问时间:11/13/2023 最后编辑:Natalia G 更新时间:11/15/2023 访问量:67

问:

我正在运行以下查询:

${points}    Query    select points from table

它给了我以下结果:

[(Decimal('357.0000'),)]

如何将上述结果转换为浮点数?我想将其与另一个浮点值进行比较

我已经尝试过使用转换为...关键字

谢谢大家的帮助

python 机器人框架 机器人

评论

0赞 rasjani 11/13/2023
如果您通过打印列表得到了该“结果”,则实际的十进制值应该可以与任何浮点值进行比较。您看到类名是因为打印值调用 repr 并将类名添加到输出中。如果没有,你可以用 float() 类型转换值
0赞 user_stack_overflow 11/13/2023
我在下面添加了一个答案,如果令人满意,请竖起大拇指!!
0赞 Natalia G 11/13/2023
@rasjani当我尝试比较它们时,我得到的是:Suspended due to logged failure: Evaluating expression '[(Decimal('357.0000'),)] > [(Decimal('347.0000'),)]' failed: NameError: name 'Decimal' is not defined nor importable as module

答:

1赞 Kirill Anisimov 11/13/2023 #1

如果您想检查平等。为什么不试试 Should Be Equal As Numbers 关键字呢?如果对象在转换为实数后不相等,它将失败。

Should Be Equal As Numbers    ${points}   ${another_float_value}

如果您想检查其中一个值是否大于或小于另一个值,我想您可以使用 EvaluateShould Be True

Should Be True    '${points}' > '${another_float_value}'

如果我没记错的话,上面的例子将帮助您检查数是否大于 another_float_value

评论

0赞 Natalia G 11/13/2023
如果我想检查${points}是否小于/大于${another_float_value},该怎么办?
0赞 Kirill Anisimov 11/13/2023
然后@NataliaG尝试检查“评估”或“应该是真的”关键字。两者都接受在 Python 中计算的表达式。我用例子更新了上面的答案。
0赞 Natalia G 11/13/2023
不幸的是,当我尝试执行时:我得到这个例外:Should Be True ${points} > ${another_float_value}Suspended due to logged failure: Evaluating expression '[(Decimal('357.0000'),)] > [(Decimal('347.0000'),)]' failed: NameError: name 'Decimal' is not defined nor importable as module
0赞 rasjani 11/14/2023
@NataliaG该错误消息说您的两个值都是包含十进制的元组列表 - 这不是一个数值,您需要围绕它执行 for 循环使您调用的任何关键字返回更理智的数据类型
0赞 Natalia G 11/15/2023 #2

我找到了一个解决方案 - 数据库查询的返回值是一个元组列表(这就是为什么我的值等于 [(Decimal('357.0000'),)]) 我所要做的就是获取元组的第一个元素 - 在我的情况下

${points[0][0]}

在比较两个值时:

Should Be True    ${points[0][0]} > ${points2[0][0]}