抑制 test_that 输出 "Test passed :)"
Suppress test_that output "Test passed :)"
R 中 test_that 包(版本 3.0.2)的更新导致通过测试的默认输出为:
Test passed :)
这最初很可爱,但在每次迭代都执行数千次测试的模型中很烦人。
如何抑制这条消息?
一个选项是将消息提取为字符串并将其转移到一个对象。我们可以使用 capture.output
out <- capture.output(test_that("trigonometric functions match identities", {
expect_equal(sin(pi / 4), 1 / sqrt(2))
expect_equal(cos(pi / 4), 1 / sqrt(2))
expect_equal(tan(pi / 4), 1)
}))
但是抑制消息的函数仍会打印消息
捕获后我们可以设置一个条件grep
是否打印
f1 <- function(x) if(any(!grepl('passed', x))) cat(x, sep='\n')
out1 <- capture.output(test_that("trigonometric functions match identities", {
expect_equal(sin(pi / 4), 1 / sqrt(2))
expect_equal(cos(pi / 4), 1 / sqrt(2))
expect_equal(tan(pi / 4), 1)
expect_equal(sin(pi / 4), 1)
}))
f1(out) # nothing prints
f1(out1)
#── Failure (???): trigonometric functions match identities ─────────────────────
#sin(pi/4) not equal to 1.
#1/1 mismatches
#[1] 0.707 - 1 == -0.293
R 中 test_that 包(版本 3.0.2)的更新导致通过测试的默认输出为:
Test passed :)
这最初很可爱,但在每次迭代都执行数千次测试的模型中很烦人。
如何抑制这条消息?
一个选项是将消息提取为字符串并将其转移到一个对象。我们可以使用 capture.output
out <- capture.output(test_that("trigonometric functions match identities", {
expect_equal(sin(pi / 4), 1 / sqrt(2))
expect_equal(cos(pi / 4), 1 / sqrt(2))
expect_equal(tan(pi / 4), 1)
}))
但是抑制消息的函数仍会打印消息
捕获后我们可以设置一个条件grep
是否打印
f1 <- function(x) if(any(!grepl('passed', x))) cat(x, sep='\n')
out1 <- capture.output(test_that("trigonometric functions match identities", {
expect_equal(sin(pi / 4), 1 / sqrt(2))
expect_equal(cos(pi / 4), 1 / sqrt(2))
expect_equal(tan(pi / 4), 1)
expect_equal(sin(pi / 4), 1)
}))
f1(out) # nothing prints
f1(out1)
#── Failure (???): trigonometric functions match identities ─────────────────────
#sin(pi/4) not equal to 1.
#1/1 mismatches
#[1] 0.707 - 1 == -0.293