问题标签 [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.
r - 检查为 CRAN,但不要跳过任何测试
是否有任何简单的方法devtools::check()
可以运行扩展的 CRAN 检查,但也运行标记为的 testhat 测试skip_on_cran()
?
基本上,我想运行最全面的测试:所有的 CRAN 检查,加上我所有的单元测试
r - 如何为建议的包编写单元测试?
R 中的包可以对其他包有不同类型的依赖。其中一些类型表示硬要求,Depends
即Imports
和LinkingTo
。
但是,还有第二个类别表示更软的依赖关系,即Suggests
和Enhances
。在这两种情况下,如果建议的/增强的软件包可用,该软件包会提供额外的功能。
这是一个具体的例子:包checkpoint
导入knitr
是因为knitr
有助于checkpoint
解析rmarkdown
文件。
但是现在我正在考虑更改knitr
为依赖项,即仅在实际安装Suggests
时才提供此功能。knitr
对于正确的单元测试,这意味着我必须测试两种情况:
- 如果
knitr
有空,那就做事。 - 如果
knitr
不可用,则抛出警告并且什么也不做。
实际的 R 代码很简单:
问题
但是如何为这两种情况设置单元测试呢?
在我看来,如果包在本地库中可用,检查的简单事实require(knitr)
将加载包。knitr
因此,要测试案例 1,我必须在knitr
本地安装,这意味着我无法测试案例 2。
有没有办法testthat
为这个用例配置(或任何其他单元测试框架)?
r - testthat 中的函数 expect_that 遇到错误
任何人都可以帮助我并解释为什么 expect_that
如果[]
添加到停止消息中不起作用,即f1
起作用但f2
不起作用。
r - 如何将 testthat 的错误消息作为数据帧结果的一部分捕获?
我正在使用 testthat 包来运行测试,到目前为止我对它非常满意。目前,我正在使用 test_file() 函数来运行所有测试并将其结果捕获为数据帧,然后进行一些额外的分析。
但是,我想做的一件事是从数据帧本身的故障中捕获错误消息。我真的很喜欢其中一些消息的描述性,如果有额外的信息在下游会很好。下面是我正在考虑的一个例子。我想将“平均绝对差:1”消息捕获为df
.
消息正在生成,在其中一个 Reporter 类中拦截这些消息似乎并没有太大的难度,但是在浏览了文档和源代码之后,我不认为该功能是内置的。
那么,是否可以使用当前版本的 testthat 来做到这一点?
如果没有,启用此功能需要做什么?我愿意为这个项目做出贡献,但我不确定从哪里开始,因为我不太习惯 R 的 OOP。
感谢您的输入。
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
:
我得到了预期的输出和结果:
r - 测试软件QuickCheck有R口吗?
现在我发现自己花了很多时间在 R 中进行编程,我真的很想回到自动化测试(这是我在 Perl 中养成的习惯)。除了用户友好之外,我还对能够为 PerlTest::LectroTest
或 Haskell 的QuickCheck等测试生成随机输入特别感兴趣。有什么类似的R
吗?
r - 如何为返回数据帧的函数编写单元测试
我正在编写一个最终返回数据框的脚本。我的问题是关于如何使用单元测试包来确保返回的数据帧是正确的,是否有任何好的做法。(我是一名 R 程序员,对单元测试的概念还很陌生)
我的脚本实际上如下所示:
...我最终得到一个包含许多新列的数据框。但是,使用单元测试来测试生成的数据帧是否符合预期的最佳方法是什么?
到目前为止,我已经创建了检查每个函数结果的单元测试,但我想确保将所有这些一起运行会产生预期的结果。我查看了Hadley Wickham 的测试页面,但在返回数据帧时看不到任何明显的内容。
到目前为止,我的想法是:
- 手动创建预期的数据框
- 检查输出是否等于此数据帧,使用
expect_that
或类似
关于在哪里寻找指导的任何想法/指示?迄今为止,我的 Google-fu 在这方面让我非常失望。
r - 检索预期的 data.frame 以测试预期
我想测试一个函数是否返回了预期的data.frame。data.frame 太大而无法在 R 文件中定义(例如,使用类似的东西structure()
)。当我尝试从磁盘进行简单检索时,我的环境出现了问题,例如:
在控制台中运行时,这些行正确执行。但是当我运行devtools::test()
时,从文件中读取 rds/data.frame 时会出现以下错误。
要做到这一点,需要对环境进行哪些调整?如果没有简单的方法,那么测试大型 data.frames 的好方法是什么?
r - 在哪里使用 testthat 进行库调用?
我正在寻找有关出色的最佳实践帮助testthat
。library(xyzpackage)
调用所有包功能的最佳位置在哪里?
我首先设置了一个runtest.R
设置路径和包。然后我运行它只test_files(test-code.R)
包含上下文和测试。结构示例如下:
在我的测试文件中,例如test-plotdata.R
(精简版):
这是@hadley 打算使用它的方式吗?从期刊文章中不清楚。我是否也应该在我的测试文件中复制库调用?您需要在每个上下文中设置一个库,还是只在文件开头设置一个库?
在r中过度调用 library(package) 可以吗?
要使用设置文件的最佳方式
test_dir()
和其他功能。我确实在我的函数中使用了 require(),但我还在上下文中设置了测试数据示例。(在上面的例子中,你会看到我需要 data.table 包供 test.dt 用于其他测试)。
谢谢你的帮助。
r - testthat 中的否定条件
是否可以在 test_that() 或 expect_XXX() 调用中写入否定条件?具体来说,我想测试一个不包含子字符串的字符串,比如:
或者
我知道我可以将 expect_true() 与例如 grep 结合使用:
但这似乎不太可读。