【问题标题】:How to set the tolerance of expect_equal in testthat framework如何在testthat框架中设置expect_equal的容差
【发布时间】:2014-10-17 06:42:10
【问题描述】:

我想知道是否可以在 R 中使用 testthat 测试框架来设置相等的容差。

目前,如果example.R 是:

library(testthat)
three_times<-function(x) 3*x

context('Test three_times')
test_that('Three times returns 3 times x',{
    expect_equal(three_times(3),9)
    expect_equal(three_times(pi),9.4247)
})

并使用test_file('example.R','stop') 执行,第一个测试通过,但第二个测试失败:

 Error: Test failed: 'Three times returns 3 times x'
Not expected: three_times(pi) not equal to 9.4247
Mean relative difference: 8.271963e-06. 

是否可以为平均相对差设置更高的误差阈值?例如 1e-3。我有一些只有小数点后 3 位精度的预期结果,这意味着现在我的测试总是失败...

【问题讨论】:

    标签: r unit-testing testthat


    【解决方案1】:

    您可以传递参数scaletolerance。这些参数被传递给all.equal

    expect_equal(three_times(pi),9.4247, tolerance=1e-8)
    Error: three_times(pi) not equal to 9.4247
    Mean relative difference: 8.271963e-06
    
    expect_equal(three_times(pi),9.4247, tolerance=1e-3)
    

    更多帮助请见?all.equal

    【讨论】:

    • 必须tolerance=命名为2015年5月CRAN上的testthat 0.10.1。即expect_equal(pi*3, 9.4247, 1e-3)不再有效,必须是expect_equal(pi*3, 9.4247, tolerance=1e-3)
    猜你喜欢
    • 2016-10-10
    • 2017-02-13
    • 2011-10-06
    • 1970-01-01
    • 2011-02-06
    • 2013-07-09
    • 2012-04-18
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多