问题标签 [testthat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
421 浏览

r - 检查为 CRAN,但不要跳过任何测试

是否有任何简单的方法devtools::check()可以运行扩展的 CRAN 检查,但也运行标记为的 testhat 测试skip_on_cran()

基本上,我想运行最全面的测试:所有的 CRAN 检查,加上我所有的单元测试

0 投票
1 回答
378 浏览

r - 如何为建议的包编写单元测试?

R 中的包可以对其他包有不同类型的依赖。其中一些类型表示硬要求,DependsImportsLinkingTo

但是,还有第二个类别表示更软的依赖关系,即SuggestsEnhances。在这两种情况下,如果建议的/增强的软件包可用,该软件包会提供额外的功能。

这是一个具体的例子:包checkpoint导入knitr是因为knitr有助于checkpoint解析rmarkdown文件。

但是现在我正在考虑更改knitr为依赖项,即仅在实际安装Suggests时才提供此功能。knitr

对于正确的单元测试,这意味着我必须测试两种情况:

  1. 如果knitr有空,那就做事。
  2. 如果knitr不可用,则抛出警告并且什么也不做

实际的 R 代码很简单:

问题

但是如何为这两种情况设置单元测试呢?

在我看来,如果包在本地库中可用,检查的简单事实require(knitr)将加载包。knitr

因此,要测试案例 1,我必须在knitr本地安装,这意味着我无法测试案例 2。

有没有办法testthat为这个用例配置(或任何其他单元测试框架)?

0 投票
1 回答
239 浏览

r - testthat 中的函数 expect_that 遇到错误

任何人都可以帮助我并解释为什么 expect_that 如果[]添加到停止消息中不起作用,即f1起作用但f2不起作用。

0 投票
2 回答
572 浏览

r - 如何将 testthat 的错误消息作为数据帧结果的一部分捕获?

我正在使用 testthat 包来运行测试,到目前为止我对它非常满意。目前,我正在使用 test_file() 函数来运行所有测试并将其结果捕获为数据帧,然后进行一些额外的分析。

但是,我想做的一件事是从数据帧本身的故障中捕获错误消息。我真的很喜欢其中一些消息的描述性,如果有额外的信息在下游会很好。下面是我正在考虑的一个例子。我想将“平均绝对差:1”消息捕获为df.

消息正在生成,在其中一个 Reporter 类中拦截这些消息似乎并没有太大的难度,但是在浏览了文档和源代码之后,我不认为该功能是内置的。

那么,是否可以使用当前版本的 testthat 来做到这一点?

如果没有,启用此功能需要做什么?我愿意为这个项目做出贡献,但我不确定从哪里开始,因为我不太习惯 R 的 OOP。

感谢您的输入。

0 投票
1 回答
1321 浏览

r - R 测试不报告失败或错误

我发现使用testthat. 运行时test_file,会发现单独test_that的调用,但除了上下文名称之外没有输出到控制台,并且返回data.frame的结果没有预期的结果。我怀疑我在做一些非常愚蠢的事情,但尝试了很多替代方案并得到了相同的结果。

这是我的tests.r文件:

我运行test_file它:

如您所见,没有控制台输出,并且在结果data.frame中没有一个失败的测试和一个有错误的测试,看起来好像一切都通过了。

当我直接在控制台中运行函数体时,我得到了预期的结果:

这就是我正在运行的:

怀疑我的安装可能有问题,或者我在 Ubuntu Trusty/R 3.12 和 Windows 7/R 3.11 上尝试了相同的测试并得到相同的结果。我真的一定是在做蠢事!

当我使用以下方法编写类似测试时Runit

我得到了预期的输出和结果:

0 投票
1 回答
208 浏览

r - 测试软件QuickCheck有R口吗?

现在我发现自己花了很多时间在 R 中进行编程,我真的很想回到自动化测试(这是我在 Perl 中养成的习惯)。除了用户友好之外,我还对能够为 PerlTest::LectroTest或 Haskell 的QuickCheck等测试生成随机输入特别感兴趣。有什么类似的R吗?

0 投票
3 回答
5841 浏览

r - 如何为返回数据帧的函数编写单元测试

我正在编写一个最终返回数据框的脚本。我的问题是关于如何使用单元测试包来确保返回的数据帧是正确的,是否有任何好的做法。(我是一名 R 程序员,对单元测试的概念还很陌生)

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

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

到目前为止,我已经创建了检查每个函数结果的单元测试,但我想确保将所有这些一起运行会产生预期的结果。我查看了Hadley Wickham 的测试页面,但在返回数据帧时看不到任何明显的内容。

到目前为止,我的想法是:

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

关于在哪里寻找指导的任何想法/指示?迄今为止,我的 Google-fu 在这方面让我非常失望。

0 投票
2 回答
765 浏览

r - 检索预期的 data.frame 以测试预期

我想测试一个函数是否返回了预期的data.frame。data.frame 太大而无法在 R 文件中定义(例如,使用类似的东西structure())。当我尝试从磁盘进行简单检索时,我的环境出现了问题,例如:

在控制台中运行时,这些行正确执行。但是当我运行devtools::test()时,从文件中读取 rds/data.frame 时会出现以下错误。

要做到这一点,需要对环境进行哪些调整?如果没有简单的方法,那么测试大型 data.frames 的好方法是什么?

0 投票
2 回答
1479 浏览

r - 在哪里使用 testthat 进行库调用?

我正在寻找有关出色的最佳实践帮助testthatlibrary(xyzpackage)调用所有包功能的最佳位置在哪里?

我首先设置了一个runtest.R设置路径和包。然后我运行它只test_files(test-code.R)包含上下文和测试。结构示例如下:

在我的测试文件中,例如test-plotdata.R(精简版):

  1. 这是@hadley 打算使用它的方式吗?从期刊文章中不清楚。我是否也应该在我的测试文件中复制库调用?您需要在每个上下文中设置一个库,还是只在文件开头设置一个库?

  2. 中过度调用 library(package) 可以吗?

  3. 要使用设置文件的最佳方式test_dir()和其他功能。我确实在我的函数中使用了 require(),但我还在上下文中设置了测试数据示例。(在上面的例子中,你会看到我需要 data.table 包供 test.dt 用于其他测试)。

谢谢你的帮助。

0 投票
1 回答
76 浏览

r - testthat 中的否定条件

是否可以在 test_that() 或 expect_XXX() 调用中写入否定条件?具体来说,我想测试一个不包含子字符串的字符串,比如:

或者

我知道我可以将 expect_true() 与例如 grep 结合使用:

但这似乎不太可读。