我们正在构建一个 R 代码库,并希望对我们编写的任何函数进行单元测试。到目前为止,我们已经找到了两个 R 测试库:RUnit 和 testthat。
在进行了一些沙箱处理之后,我们开发了一种可靠的方法来在每次运行时测试代码。例如。:
# sample.R
library(methods) #required for testthat
library(testthat)
print("Running fun()...")
fun <- function(num1, num2){
num3 = num1 + num2
return(num3)
}
expect_that(fun(1,2), equals(3))
够简单的。然而,我们还希望能够在不运行定义该函数的脚本的情况下测试该函数(例如,在 makefile 中使用单元测试标志)。为此,我们将在 test.R 中编写单元测试
# test.R
source("sample.R")
expect_that(fun(2,3), equals(5))
并运行它不运行示例的其余部分。R。但是,当运行上面的代码时,不仅会运行函数,还会运行sample.R 中的其余代码,在本例中输出“Running fun()...”。有没有办法只从文件中 source() 用户定义的函数?
如果没有,您是否建议将函数放在一个单独的文件中(例如,functions.R),该文件可以通过获取到 test.R 进行单元测试,并在获取到 sample.R 时运行?那里的缺点似乎是所需的样板文件:用于流程的文件、用于函数的文件以及用于运行测试的文件。
在每个脚本中,设置一个已定义的名称变量only如果尚未定义。看exists()
。我很喜欢__name__
.
在每个脚本中创建一个仅在名称正确时运行的主函数。如果这是顶级脚本,则此函数包含您只想运行的所有内容。
这类似于python的结构
if __name__ == "__main__": main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)