忽略有时仅提出的特定警告

时间:2017-07-21 08:33:15

标签: r warnings testthat

我的一项测试涉及可能产生特定警告的代码。如果出现此警告,我想忽略它。但是,如果有任何其他警告,我想将其视为错误。使用testthat实现此目的的最简单方法是什么?

应用程序将是随机测试或其他情况,其中很难事先确定函数的输入是否会引发警告。

玩具示例:

library(testthat)

for (i in 0:100) {
  a <- sample(100, 1) - 5
  result <- (a + 0):(a + 10) / (a + 10):(a + 0)
  result2 <- (log(min(result)))
}

当然,在这个玩具示例中,很容易检查result < 0

1 个答案:

答案 0 :(得分:0)

以下作品受到testthat::expect_warning的启发:使用testthat::capture_warning并分析警告:

library(testthat)

for (i in 0:100) {
  a <- sample(100, 1) - 5
  result <- (a + 0):(a + 10) / (a + 10):(a + 0)
  w <- capture_warnings(result2 <- (log(min(result))))
  if (length(w) > 0) {
    expect_match(w, regexp = "^$|.*NaNs produced.*")
  }
  print(result2)
}