You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的testthat中定义仅用于测试的专属函数?

解决R包测试中共享专属测试函数的问题

要让测试专用函数能被所有测试文件访问,直接按以下步骤操作即可:

  • 在tests/testthat目录下创建以helper-开头的R文件,比如helper-test-db.R。testthat会自动在运行所有测试前加载这类文件,文件内的函数会被所有测试脚本共享。
  • 把你的is_test_db函数移到这个helper文件里,示例代码如下:
is_test_db <- function() {
    x <- try({
        con <- db_connect()
        on.exit(db_disconnect(con), add = TRUE)
    })
    # 简化返回逻辑
    !inherits(x, "try-error")
}
  • 把tests/testthat.R里的函数定义删掉,只保留核心的测试启动代码:
library(testthat)
library(mypackage)

test_check("mypackage")

之后,你在任何tests/testthat下的测试文件(比如test-*.R)里,都可以直接调用is_test_db()。比如在测试里跳过无法连接数据库的用例:

test_that("数据库操作功能正常", {
  skip_if_not(is_test_db(), "测试数据库无法连接,跳过该测试")
  # 编写具体的测试逻辑
})

内容的提问来源于stack exchange,提问作者Bangyou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:58:14