You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework中Should Be Equal As Numbers容差设置后测试失败的解决

解决Robot Framework中数值容差等于时测试失败的问题

问题原因

你遇到的问题本质是浮点数精度误差:十进制的0.61和0.62无法被二进制浮点数精确表示,实际计算两者差值时,结果会是0.010000000000000009这类略大于0.01的数值,导致Should Be Equal As Numbers判断差值超出容差,测试失败。

解决方案

方案1:手动计算差值并判断

绕过Should Be Equal As Numbers的浮点数精度问题,直接计算差值的绝对值,再判断是否小于等于容差:

*** Settings ***
Library    BuiltIn

*** Test Cases ***
Compare Values With Tolerance
  ${value1}    Set Variable    0.61
  ${value2}    Set Variable    0.62
  ${diff}    Evaluate    abs(${value1} - ${value2})
  Should Be True    ${diff} <= 0.01

方案2:使用精确十进制类型运算

利用Python的Decimal类型处理精确的十进制计算,从根源避免浮点数误差:

*** Settings ***
Library    BuiltIn

*** Test Cases ***
Compare Values With Tolerance
  ${value1}    Evaluate    from decimal import Decimal; Decimal('0.61')
  ${value2}    Evaluate    from decimal import Decimal; Decimal('0.62')
  ${diff}    Evaluate    abs(${value1} - ${value2})
  Should Be True    ${diff} <= Decimal('0.01')

方案3:微调容差值(临时 workaround)

如果不想修改逻辑,可以稍微放大容差值,覆盖浮点数精度带来的微小偏差:

Should Be Equal As Numbers    ${value1}    ${value2}    tolerance=0.0100000001

内容的提问来源于stack exchange,提问作者Noah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:44:57