如何测试函数是否返回消息

时间:2019-05-07 22:03:06

标签: r selenium message rselenium

背景::在R中,包“ testit”(here)具有功能has_warninghas_error,但是我正在寻找一个如果 has_message ,则返回逻辑TRUE / FALSE。

为什么:标识webElem$submitElement()包中的RSelenium何时返回RSelenium消息,因为硒消息未归类为R中的警告或错误。

是否可以测试函数是否在R中返回了一条消息?

理想情况如下:

#Ideally a function like this made up one:
has_message(message("Hello ","World!"))
[1] TRUE

has_message(print("Hello World!"))
[1] FALSE

1 个答案:

答案 0 :(得分:4)

您可以使用tryCatch

has_message <- function(expr) {
  tryCatch(
    invisible(capture.output(expr)),
    message = function(i) TRUE
  ) == TRUE
}

has_message(message("Hello World!"))
# TRUE
has_message(print("Hello World!"))
# FALSE
has_message(1)
# FALSE

使用tryCatch评估invisible(capture.output())中的表达式以抑制print或其他输出。当没有消息时,我们需要最终的== TRUE返回FALSE,否则最后的示例将没有输出。