R testthat包:使用test_file()时,如何查看message()的输出
我在R中使用了优秀的testthat包。我的问题是,在使用test_文件时,在被测试的代码中看不到message()函数的任何输出。例如,假设我在一个名为test_message.R的文件中有以下代码R testthat包:使用test_file()时,如何查看message()的输出,r,testthat,R,Testthat,我在R中使用了优秀的testthat包。我的问题是,在使用test_文件时,在被测试的代码中看不到message()函数的任何输出。例如,假设我在一个名为test_message.R的文件中有以下代码 f <- function() { message ("Message: Hello world") cat ("Cat: Hello world\n") return (1) } test_that ("message shows up", { expe
f <- function() {
message ("Message: Hello world")
cat ("Cat: Hello world\n")
return (1)
}
test_that ("message shows up", {
expect_equal(f(), 1)
})
因此,我没有看到message()中的文本
但是,当我自己运行代码时,我确实看到了它:
> f()
Message: Hello world
Cat: Hello world
[1] 1
我知道默认情况下,message()会写入stderr,cat会写入stdout,我猜test_文件会“截取”stderr以测试警告和错误中的文本。是否有任何方法可以配置内容,以便在控制台上看到message()文本 您不能这样做,至少必须修改
testthat
的源代码。这是运行测试代码的部分:如果从test\u code
功能中删除suppressMessages
,则将显示消息
顺便说一句,
test,
不会捕获标准输出或错误,因此如果您使用cat
或其他方式对其进行写入,也会显示出来。这是我在so上的第一篇文章,关于我两周前刚开始学习的一种语言,请温柔些
我相信以下是你想要的:
test_that ("message shows up", {
expect_message(f(), "^Message: Hello world\\n")
})
此外,请参见第23页的显示消息
和预期消息
(供将来参考:v0.8.1发布于2014-02-22 00:25:04)
完全归功于GSee,这是继这篇文章之后的第二篇文章,我在寻找测试这篇文章时发现了这篇文章
我刚刚发现了evaluate\u promise
(也在上面链接的pdf中)。因此,这里有一个替代方案,它将测试消息并打印输出:
test_that ("message shows up", {
result <- evaluate_promise(f(), print = TRUE)
expect_that(result$message, equals("Message: Hello world\n"))
print(result$output)
})
测试(“消息显示”{
结果我可以问一下为什么在运行测试时要查看消息的输出吗?我把消息()首先调用代码以记录代码的进度。我希望在运行测试时查看这些消息,以了解代码失败之前的进展情况,并查看消息本身是否正常工作。看起来我需要使用另一种机制来完成此操作。谢谢。这非常适合测试我正在查找的消息。问题是,我想看到消息在运行时打印出来,而不仅仅是测试它们是否存在。我可以不使用此功能,或者使用您的建议测试消息,或者只是在非测试环境中观察消息。@user2793761添加了一个使用evaluate\u promise
的替代选项,该选项可以我不能满足。
test_that ("message shows up", {
result <- evaluate_promise(f(), print = TRUE)
expect_that(result$message, equals("Message: Hello world\n"))
print(result$output)
})