提问人:Natalia G 提问时间:11/13/2023 最后编辑:Natalia G 更新时间:11/15/2023 访问量:67
如何在机器人框架中转换查询结果
How to convert the result of a query in Robot Framework
问:
我正在运行以下查询:
${points} Query select points from table
它给了我以下结果:
[(Decimal('357.0000'),)]
如何将上述结果转换为浮点数?我想将其与另一个浮点值进行比较
我已经尝试过使用转换为...关键字
谢谢大家的帮助
答:
1赞
Kirill Anisimov
11/13/2023
#1
如果您想检查平等。为什么不试试 Should Be Equal As Numbers 关键字呢?如果对象在转换为实数后不相等,它将失败。
Should Be Equal As Numbers ${points} ${another_float_value}
如果您想检查其中一个值是否大于或小于另一个值,我想您可以使用 Evaluate 或 Should 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]}
评论
Suspended due to logged failure: Evaluating expression '[(Decimal('357.0000'),)] > [(Decimal('347.0000'),)]' failed: NameError: name 'Decimal' is not defined nor importable as module