我有很多函数来检查每个函数是否都工作得很完美。我对使用'testthat‘包非常陌生。首先,我的代码必须从某个位置读取数据
baseData = fread(file = "./Data/ABC.csv", data.table = FALSE, stringsAsFactors = FALSE, showProgress = FALSE, encoding = "UTF-8")接下来,我想根据特定的列过滤数据,假设ab_010 = 10。
baseData = baseData %>% filter(., ab_010 == 10)现在,我想使用testthat检查过滤是否正确。此外,我还经历了许多bolgs,比如这个https://b-rodrigues.github.io/fput/unit-testing.html。但是我不清楚如何将这个案例应用到我的场景中。这是我用testthat写的一段代码,
test_that("To check Base data is being read correctly",{
expected <- fread(file = "./Data/ABC.csv", data.table = FALSE, stringsAsFactors = FALSE, showProgress = FALSE, encoding = "UTF-8")
actual <- fread("./Data/ABC.csv")
expect_equal(expected,actual)
})测试失败了!我需要在哪里进行更改?
发布于 2020-03-05 19:08:03
有(至少)两种方法来测试这样的函数的行为:
第一种可能更健壮,因为对于第二种情况,相同的错误可以在测试和函数中实现。然而,它通常更耗时,因为它还取决于您是否确定保存的输出是正确的。
发布于 2020-03-06 19:41:09
我已经找到了这样做的解决方案。首先,让我分享一些关于如何使用“testthat”的好知识的资源。https://r-pkgs.org/tests.html。这个网站有作者自己关于测试的很好的解释。
什么是testthat,它如何用于单元测试?我读了很多关于测试的内容,这是关于它的简短解释。首先,'testthat‘是一个用来进行单元测试的R包。它主要由三个概念组成,
期望
因此,测试的基本单位应该是期望。这些只是测试用例或者我们想要测试的东西。expect_的代码应该以expect_开头。在测试这个包时,有超过15个期望。最常用的是"expect_that“。其语法为expect_that(实际结果,预期结果)。通常使用的其他期望是expect_true()、expect_false()、expect_output()等。
测试
测试只不过是我们想要测试的期望。这是使用关键字test_that()完成的,test_that的语法是test_that(关于测试的描述,测试的条件(期望))。
文件
文件是测试文件。要测试的文件应以test_filename开头。
如何知道测试是否已执行?
一旦代码被执行,如果它被运行并转到下一行,那么测试就成功了。如果测试失败,则返回一条错误消息。
我是如何解决我的问题的?
我的问题是检查过滤是否正确发生。这是它的代码,
test_that("Filtering of ab010 == 10 as expected",{
require("dplyr")
expect_true(unique(baseData[,"ab010"]) == 10)
})如果测试失败,则会抛出如下所示的错误消息
Error: Test failed: 'Filtering of ab010 == 10 as expected'
* unique(baseData[, "ab010"]) == 10 isn't true.这解决了我的问题。
https://stackoverflow.com/questions/60543855
复制相似问题