问题标签 [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 - 在对 travis 进行测试的测试期间使用 load() 从 .RData 文件中加载数据
我正在使用该testthat
包通过我正在开发的 R 包运行单元测试。我遇到了一个奇怪的情况,我无法弄清楚我做错了什么。
我正在尝试加载一些测试数据(存储在数据框中)和一些预先计算的答案(同样,存储在数据框中)来测试一些函数并比较结果。我已将两组数据保存为 .Rdata 文件(在 tests/testthat/ 目录中),并在运行测试之前将它们加载load(file.path('filename.RData'))
当我在我的计算机上运行测试时,测试运行良好。但是当他们在 travis 上运行时,我得到了错误:
我肯定遗漏了一些非常简单的东西,但是我已经尝试了所有明显的东西(从目录开头指定相对路径等)有没有人对如何让 travis 能够加载这些文件有任何想法?
这是有问题的 testthat 文件的内容:
r - 使用 RStudio 自动记录 Shiny 应用程序的功能
我现在正在开发一个闪亮的应用程序,并且功能比我预期的要多。我计划开始自动化测试,testthat
我很想用roxygen2
.
由于我使用的是 RStudio,因此我开始了一个新的闪亮应用项目。现在我想知道,既然我想要完成文档和测试,是否应该在 RStudio 中启动一个包来获取所有devtools
功能。
我想知道,如何正确记录函数,就像在build
, 中一样来测试示例。加上使用testthat
功能。我怎样才能建立这样的项目?
r - 比较data_frames时如何在testthat中设置expect_equal的容差?
当我检查两个 data_frames 是否相等时,我无法使用 testthat 的容差参数。这是一个包含两个数据框的简单示例:
当我检查相等性时,即使容差值足够高,testthat 也会引发错误:
比较各个向量时不会引发错误:
有什么建议么?我假设我滥用了 expect_equal 函数,但除了在数据框的各个列上运行 expect_equal 之外,我不确定如何解决。
这是我正在使用的软件包版本:
r - 为什么这个简单的 data.table 测试失败了?如何解决?
假设我写了一个包“ hello
”......
...使用单个导出函数:
为了使这个包工作,我还添加
到DESCRIPTION
文件。
现在我想为它写一个单元测试:
...在文件中tests/testthat/test-hello.R
:
当我运行测试时,它们失败了:
为什么??testthat
尽管我用谷歌搜索了和之间不兼容的其他情况data.table
,但它们与:=
操作员无关。他们指责testthat
包裹。
这是我的会话信息:
有什么解决方法吗?放弃data.table
对我来说不是一个选择,因为我的库处理非常大的数据集。
r - R tryCatch with testthat 期望
我有以下功能:
在 a 中调用它,tryCatch()
以便expr
优雅地处理其中的任何错误条件。
它适用于标准错误条件:
但是,它不会捕获testthat
预期错误(这对于我的特定用例来说是首选):
或更简单地说:
未捕获期望错误。
从 R 3.2.2 升级到 R 3.3.0 后出现此问题 - 即在 R 3.2.2 中发现了预期错误。
有没有办法让R 3.3.0 中testthat
的期望得到满足?tryCatch()
r - 阅读登录 Travis CI 的详细测试
我正在开发一个使用 Travis CI 测试的R 项目。当我在本地运行测试时,所有测试都通过了。当这些测试在 Travis CI 上运行时,一些测试会失败。testthat
问题是我看不到测试运行后出现的详细错误消息。
我确实看到了 Travis 错误的“顶部”:
我没有在 Travis CI 上看到错误消息的“底部”。我在这里举了一个例子,所以你知道我希望看到什么:
我期望/希望我能掌握 Travis CI 的“下部”。我希望/希望某处有一个日志文件,但我找不到在哪里。
[编辑:添加此] 请注意,有时我会看到类似下面示例输出的输出。这可能是一个单独的问题,但我也很想在那里看到所有输出行:
r - 在测试时避免由于 readline() 导致的暂停
我正在使用包中的test_dir()
函数在 R 中运行测试testthat
。在一些测试脚本中,有调用 的函数,readline()
在交互模式下,它会导致测试暂停并等待用户输入。调用的函数readline()
不是我自己的,我对它们没有任何影响。用户输入与这些功能的输出无关。
有没有办法在测试期间避免这些暂停?
想到的方法,但我不知道如何实现它们:
- 在 R 运行时禁用交互模式
- 使用
testthat
包中的另一个以非交互模式运行脚本的函数 - 以某种方式转移
stdin
到终端以外的其他东西(??) - 包装
readline()
在另一个脚本中调用的函数,该脚本在我的测试脚本中以非交互模式调用,并使结果可用
仅使用命令行进行测试Rscript
是一种选择,但我宁愿留在 RStudio 工作流程中。
======
示例代码
r - “随机单元”测试
我想在每次测试时用一组新的数字测试一个函数。这个想法是在我没有预料到的情况下实现失败。
问题是当我收到失败时,我不知道是什么值a
并b
触发了失败。
我可以通过逆向工程为特定操作实现这一点expect_lte
:
错误:bad_hypotenuse_length(a, b) 不小于 a + b。差异:0.143。a = 1.1 b = 2.35
有没有办法使用现有的函数来返回类似的信息?也就是说,返回与 相同expect_...
,但还包括传递的参数的值。(如果 `testthat` 测试在 `R` 中失败,则打印自定义诊断信息的解决方案要么打印信息,要么不管测试结果如何,或者不适合现有测试。)