【问题标题】:Suppress test_that output "Test passed :)"禁止 test_that 输出“测试通过 :)”
【发布时间】:2021-08-01 04:37:25
【问题描述】:

对 R 中的 test_that 包(版本 3.0.2)的更新导致通过测试的默认输出为:

测试通过:)

这最初很可爱,但在每次迭代都执行数千次测试的模型中很烦人。

如何隐藏此消息?

【问题讨论】:

  • 你可以用capture.output 包裹到一个对象
  • @akrun 如果有错误,我希望输出打印,但如果测试通过则不打印
  • 我根据您的评论进行了更新。请检查
  • 回答了这个问题,虽然函数中的参数更可取:test_that(..., verbose=F)
  • 您可以在 github 中扩展核心功能,提出拉取请求以供接受。有verbose 参数是有意义的

标签: r testthat


【解决方案1】:

一种选择是将消息提取为字符串并将其转移到对象。我们可以使用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

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    相关资源
    最近更新 更多