失败时报告来自 test_that 块的额外信息
Report extra information from a test_that block when failing
我想 cat()
在测试失败的情况下向控制台发送一些信息(我确信这不会发生,但我不能证明它不会发生)以便我可以调查这个问题.
现在我的代码大概是这样的:
testthat::test_that('Maybe fails', {
seed <- as.integer(Sys.time())
set.seed(seed)
testthat::expect_true(maybe_fails(runif(100L)))
testthat::expect_equal(long_vector(runif(100L)), target, tol = 1e-8)
if (failed()) {
cat('seed: ', seed, '\n')
}
})
很遗憾,failed()
不存在。
Return expect_*()
的值似乎没有用,它们只是 return 实际参数。
我正在考虑使用 all.equal()
再次检查,但这是一个非常难看的重复。
除了使用 cat
,您还可以使用 testthat
管理的 info
参数及其 reporters
用于所有 expect
函数(argument kept for compatibility reasons):
library(testthat)
testthat::test_that("Some tests",{
testthat::expect_equal(1,2,info=paste('Test 1 failed at',Sys.time()))
testthat::expect_equal(1,1,info=paste('Test 2 failed at',sys.time()))
})
#> -- Failure (<text>:5:3): Some tests --------------------------------------------
#> 1 not equal to 2.
#> 1/1 mismatches
#> [1] 1 - 2 == -1
#> Test 1 failed at 2021-03-03 17:25:37
我想 cat()
在测试失败的情况下向控制台发送一些信息(我确信这不会发生,但我不能证明它不会发生)以便我可以调查这个问题.
现在我的代码大概是这样的:
testthat::test_that('Maybe fails', {
seed <- as.integer(Sys.time())
set.seed(seed)
testthat::expect_true(maybe_fails(runif(100L)))
testthat::expect_equal(long_vector(runif(100L)), target, tol = 1e-8)
if (failed()) {
cat('seed: ', seed, '\n')
}
})
很遗憾,failed()
不存在。
Return expect_*()
的值似乎没有用,它们只是 return 实际参数。
我正在考虑使用 all.equal()
再次检查,但这是一个非常难看的重复。
除了使用 cat
,您还可以使用 testthat
管理的 info
参数及其 reporters
用于所有 expect
函数(argument kept for compatibility reasons):
library(testthat)
testthat::test_that("Some tests",{
testthat::expect_equal(1,2,info=paste('Test 1 failed at',Sys.time()))
testthat::expect_equal(1,1,info=paste('Test 2 failed at',sys.time()))
})
#> -- Failure (<text>:5:3): Some tests --------------------------------------------
#> 1 not equal to 2.
#> 1/1 mismatches
#> [1] 1 - 2 == -1
#> Test 1 failed at 2021-03-03 17:25:37