【发布时间】:2022-01-30 13:08:00
【问题描述】:
在 R 中,是否可以在不使用 for 循环的情况下测试具有参数组合的函数?例如,我目前正在做类似的事情:
test_that("Function myfunction() works properly", {
a1 <- c(1, 2, 3, 10, 20, 100)
a2 <- c(-500, 0, 500)
a3 <- c("hello", "world")
for (a1i in a1) {
for (a2i in a2) {
for (a3i in a3) {
result <- myfunction(a1i, a2i, a3i)
expect_equal(result, something_expected)
expect_equal(dim(result), something_else)
# ...and other checks...
}
}
}
})
但是,对于太多的嵌套 fors,这并不实用,并且还会引发 lintr 的圈复杂度错误。
在 Python 中,我们可以使用 pytest(使用测试参数或文本夹具)轻松地做到这一点,这在 Julia 中也很容易实现。
找到了patrick这个包,但是好像没有这种方式做参数组合,只是定义参数集。我想可以使用 for 循环为 patrick 创建这些参数集,但这似乎没有抓住重点。
【问题讨论】:
标签: r unit-testing testthat