如何让testthat::expect_equal()强制采用绝对差值测试?
强制testthat::expect_equal()使用绝对差值测试的方法
要让testthat::expect_equal()始终以绝对距离进行校验(无论x与y的差异大小),最优雅的方式是调用函数时指定scale = 0参数,同时通过tolerance设置允许的绝对误差阈值:
# 示例:验证x与y的绝对差值不超过0.5 testthat::expect_equal(x, y, tolerance = 0.5, scale = 0)
原理说明
在testthat 3.x版本中,scale参数决定了误差的计算逻辑:
- 默认情况下,函数会根据数值大小自动切换相对/绝对误差模式;
- 当设置
scale = 0时,函数会强制使用绝对误差校验,直接比较abs(x - y)与tolerance的大小,完全跳过相对误差的判断逻辑。
内容的提问来源于stack exchange,提问作者A.Fischer
相关产品推荐
相关产品推荐

