如何为返回数据框的函数编写单元测试的test

Blu*_*Hat 13 unit-testing r testthat

我正在编写一个最终返回数据框的脚本.我的问题是,如果有任何关于如何使用单元测试包以确保返回的数据框是正确的良好实践.(我是R程序员的开始,加上单元测试的新概念)

我的脚本实际上如下所示:

# initialize data frame
df.out <- data.frame(...)

# function set
function1 <- function(x) {...}
function2 <- function(x) {...}

# do something to this data frame
df.out$new.column <- function1(df.out)

# do something else
df.out$other.new.column <- function2(df.out)

# etc ....
Run Code Online (Sandbox Code Playgroud)

......最终我得到了一个包含许多新列的数据框.但是,使用单元测试测试生成的数据帧是预期的最佳方法是什么?

到目前为止,我已经创建了单元测试来检查每个函数的结果,但我想确保将所有这些一起运行产生预期的结果.我查看了Hadley Wickham关于测试的页面,但是在返回数据帧时看不出有什么明显的事情要做.

我的想法是:

  • 手动创建预期的数据框
  • 使用expect_that或类似检查输出是否等于此数据帧

关于在哪里寻找指导的任何想法/指示?到目前为止,我的谷歌已经让我失望了.

Tho*_*mas 12

你的直觉似乎是对的.根据函数的预期输出手动构造一个data.frame,然后将其与函数的输出进行比较.

# manually created data
dat <- iris[1:5, c("Species", "Sepal.Length")]

# function
myfun <- function(row, col, data) {
    data[row, col]
}

# result of applying function
outdat <- myfun(1:5, c("Species", "Sepal.Length"), iris)

# two versions of the same test
expect_true(identical(dat, outdat))
expect_identical(dat, outdat)
Run Code Online (Sandbox Code Playgroud)

如果您的data.frame可能不相同,您还可以在部分data.frame中运行测试,包括:

  • dim(outdat),检查尺寸是否正确
  • attributes(outdat) 或列的属性
  • sapply(outdat, class),检查变量类
  • 变量的摘要统计(如果适用)
  • 等等