gpt4 book ai didi

R 测试那个包 : How can I see output from message() when using test_file()

转载 作者:行者123 更新时间:2023-12-04 09:50:11 25 4
gpt4 key购买 nike

我在 R 中使用了优秀的 testthat 包。我的问题是我在使用 test_file 时在被测试的代码中看不到 message() 函数的任何输出。例如,假设我在名为 test_message.R 的文件中有以下代码

f <- function() {
message ("Message: Hello world")
cat ("Cat: Hello world\n")
return (1)
}

test_that ("message shows up", {
expect_equal(f(), 1)
})

我按如下方式运行 test_file 并获得以下输出
> test_file("test_message.R")
Cat: Hello world
.

所以我没有看到 message() 中的文本。

但是,当我自己运行代码时,我确实看到了它:
> f()
Message: Hello world
Cat: Hello world
[1] 1

我知道默认情况下, message() 写入 stderr , cat 写入 stdout ,我猜 test_file “拦截” stderr 以测试警告和错误中的文本。有什么方法可以配置东西,以便我在控制台上看到 message() 文本?

最佳答案

这是我对 SO 的首篇文章,关于我两周前刚开始学习的语言,所以要温柔。

我相信以下是您正在寻找的内容:

test_that ("message shows up", {
expect_message(f(), "^Message: Hello world\\n")
})

另外,请参阅 shows_message 的文档& expect_messagetestthat.pdf 的第 23 页上(供将来引用:发布于 2014-02-22 00:25:04 for v0.8.1)。

并完全归功于 GSee https://stackoverflow.com/a/24476491/3811916这是我在测试同一问题时出现的第二篇文章。

我刚刚发现 evaluate_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)
})

关于R 测试那个包 : How can I see output from message() when using test_file(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com