R testthat 单元测试数据和辅助函数约定

2024-05-12

我正在编写一个 R 包,并使用 testthat 进行单元测试。我的许多单元测试都是为了测试适用于我的包特定对象的功能。对于这些测试,我创建了一个辅助函数来设置模拟对象。我还有一些其他辅助函数来减少单元测试中的代码量。

目前这些辅助函数在我的R/文件夹,因为这样它们就可以用于我的单元测试文件(位于tests/testthat/)。我发现将仅用于单元测试的函数放在R/文件夹。如果能把它们放在某个地方就好了tests/文件夹。但这样做似乎会使它们在单元测试期间不可用。请注意,这些辅助函数用于多个不同的测试文件,因此仅将辅助函数放置在包含单元测试的一个文件的顶部并不是一种解决方案。

另一个相关问题是在哪里放置用于单元测试的数据文件。例如我的一些功能可以工作ExpressionSet对象来自limma包(可在生物导体 http://www.bioconductor.org/),我在单元测试期间将其加载到 R 中load()功能。目前我把它们放在inst/extdata文件夹,因为这样我就可以通过以下方式访问它们system.file()在我的单元测试期间。该文件夹还包含供该包的用户使用的其他数据文件。我发现将不适合最终用户的测试数据与适合最终用户的包数据放在同一位置有点奇怪。

所以我的问题是,是否可以将单元测试辅助函数和测试数据全部放在tests/目录。如果是这样,我如何从单元测试中访问这些文件?单元测试助手和单元测试数据的最佳实践/约定是什么?


我明白文件在tests/testthat/开始于helper在运行任何测试之前由 testthat 获取。因此,您可以将用于测试的辅助函数放置在适当命名的内部helper-*.R within tests/testthat/.

来自 R 的帮助source_file from testthat (?testthat::source_file)

 The expectation is that the files can be sourced in alphabetical
 order. Helper scripts are R scripts accompanying test scripts but
 prefixed by ‘helper’. These scripts are once before the tests are
 run.

一个例子可以在源代码dplyr https://github.com/hadley/dplyr/ on github.

至于测试数据。我遵循这个问题的一条评论的建议:使用 testthat 将自动化测试的数据放在哪里? https://stackoverflow.com/questions/32328802并使用inst/testdata,然后使用访问文件system.file("testdata",...,package="my_package")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R testthat 单元测试数据和辅助函数约定 的相关文章

  • R:重新列出平面列表

    这个问题 https stackoverflow com questions 8139677有一个很好的解决方案 可以在保留列表数据类型的同时展平列表 其中unlist才不是 flatten function x unlist vector
  • 从单元测试调用时,Application.Current 为 null

    我有一个尝试从单元测试中调用的方法 该方法在现实生活中将从后台线程运行 它使用一些代码来启动 UI 线程的调用更新 使用Application Current Dispatcher BeginInvoke However Applicati
  • 从 R 文本中提取网站链接

    我有多个文本 每个文本都可能包含对一个或多个网络链接的引用 例如 text1 s 1212a as www abcd com asasa11 我如何提取 www abcd com 来自 R 中的这段文字 换句话说 我希望提取以www并结束于
  • 如何测试 Jersey REST Web 服务?

    我已经编写了一个 Restful Web 服务 并且必须使用 JUnit4 对其进行测试 我已经使用 Jersey Client 编写了一个客户端 但想知道我是否只能使用 junit4 测试我的服务 至少有人可以帮我提供样品吗 我的休息服务
  • R - Rstudio - 如果生成警告/错误,则使 R 播放声音

    我正在运行一个循环遍历股票对组合列表的脚本 偶尔 由于对组合之间的数据长度不同而产生错误 脚本会停止运行 我只是将不匹配的股票从考虑中删除 Error in model frame default formula stckY stckX 0
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • 匹配字符串在多列上循环

    我有来自一项开放式调查的数据 我有一个注释表和一个代码表 代码表是一组主题或字符串 我正在尝试做的事情 检查代码表中相关列中是否存在开放式注释中的单词 字符串 在评论表中为特定主题添加一个新列 并添加一个二进制 1 或 0 来表示已标记哪些
  • 在 R 中绘制决策树(插入符)

    我已经训练了一个数据集rf方法 例如 ctrl lt trainControl method LGOCV repeats 3 savePred TRUE verboseIter TRUE preProcOptions list thresh
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • selectInput 的动态数量

    我是闪亮的新手 所以这可能是一个非常基本的问题 我想编写一个闪亮的应用程序 其中用户输入 n 我们得到 n 个 selectInput 选项 但我无法做到这一点 基本上任何形式的 for 循环都不起作用 我尝试的代码如下 library s
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • mutate() 尝试在使用美元符号运算符时使用全局变量的值进行提取

    我使用得到了有趣的结果mutate with a 当全局环境中碰巧存在与要提取的元素同名的变量时进行提取 我正在运行 R 3 1 3 和 dplyr 0 4 3 9 这工作正常 library dplyr df lt data frame
  • 如何绘制对数似然函数图

    我想绘制 pi 和 pi 之间的对数似然函数 对数似然函数 llh lt function teta x sum log 1 cos x teta 2 pi x c 3 91 4 85 2 28 4 06 3 70 4 04 5 46 3
  • 替换因子列中的

    我想更换
  • 仅当 ggplot 中 y 轴的下限设置为 0 时才会出现图条[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个条形图 当我将限制设置为 0 7 时 就会出现条形 但是 我希望下限为 1 而不是 0 当我将下限设置为 1 时 条形图不会出现 我收到以下错误消息 Removed 8 rows contain
  • 模拟 ngrx/store

    这是关于 Angular 2 官方版本的 我知道单元测试在 beta RC 和正式版本之间发生了巨大的变化 当 ngrx store 用作构造函数中的参数时 在单元测试中模拟 ngrx store 的好方法是什么 这并不像嘲笑服务那么简单
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第
  • 在 React 中使用 setTimeout() 并测试它

    我意识到我一直在使用setTimeout 在我的项目中 也许 比我应该做的更多 我进行了快速研究并浏览了 Github 上的一些开源 React 项目 并决定我应该询问一下 I use setTimeout主要是为了更改类名或添加样式以对

随机推荐

  • RxJS - 我需要取消订阅吗

    如果我有这样的事情 class MyComponent constructor this interval Observbale interval 1000 const c new MyComponent const subscriptio
  • 无法将大小为 1665179 的数组重塑为形状 (512,512,3,3)

    该脚本用于进行检测 权重文件是 yolov4 coco 预训练模型 可以在这里找到 https drive google com file d 1cewMfusmPjYWbrnuJRuKhPMwRe b9PaT view https dri
  • UIButton 上的圆形渐变边框

    您好 我一直在尝试在我的应用程序中实现一个 UIButton 它具有圆角和渐变边框 我使用以下代码在按钮上创建渐变边框 let gradient CAGradientLayer gradient frame CGRect origin CG
  • Android如何让进度条(圆形)在按下按钮时覆盖全屏?

    我尝试在单击提交按钮时显示进度栏 数据加载完成后它将隐藏 但是 进度条没有覆盖全屏 相反 它被按钮覆盖 请参考截图 应该更容易理解我的意思 我想要实现的是屏幕截图的底部部分 Main4Activity java public class M
  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 如何更改 Amazon Redshift 中的默认时区?

    默认情况下将时间戳列设置为 SYSDATE 将其存储为UTC 是否可以更改时区 以便 SYSDATE 将日期和时间存储到不同的时区 到目前为止 我已经检查了SET http docs aws amazon com redshift late
  • 机架超时:关闭信息/活动日志记录

    随着机架超时 https github com heroku rack timeoutgem 安装后如何才能仅显示 ERROR 相关日志 例如 我想避免在我的日志中出现以下内容 source rack timeout id 8a11a8ac
  • WinError6 句柄无效 Python 3+ 多处理

    我正在运行一个 Python 3 7 Flask 应用程序 它使用flask socketio设置一个socketio用于浏览器客户端的服务器 另一个连接到单独远程的Python进程socketio服务器和交换消息 以及另一个从 PIR 传
  • JSF:不同验证器标签的不同验证消息?

    在我的 JSF Primefaces 应用程序中 我正在使用 JSF 验证器标签来验证文本框的输入
  • 在Pytorch中计算欧几里得范数..理解和实现上的麻烦

    我见过另一个 StackOverflow 线程讨论计算欧几里德范数的各种实现 但我很难理解特定实现的原因 如何工作 该代码可以在 MMD 指标的实现中找到 https github com josipd torch two sample b
  • ViewPager 开关 FragmentPagerAdapter

    我有一个ViewPager这是由一个FragmentPagerAdapter 我想将第一个适配器更换为另外两个 问题是之前加载的所有页面 同时具有第一个适配器 仍然是旧的页面 我查看了源代码FragmentPagerAdapter并猜测问题
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 将 Spring MVC 中的默认/全局日期格式设置为 ISO 8601

    我有一个简单的 Spring 控制器 RequestMapping value method RequestMethod GET public void search MyDTO dto And MyDTO public class MyD
  • 未找到行魔术函数“%%time”

    运行这个Python脚本 time train data dt fread input prediction train csv to pandas 提供的输出返回此错误 UsageError Line magic function tim
  • 如何覆盖运行时创建的 wpf 控件中的应用程序样式

    我试图在运行时创建一个 WPF 控件 但我不知道如何让它忽略来自 App xml 资源的样式 我尝试将样式设置为 null 并将 OverridesDefaultStyle 设置为 true 但没有成功 应用程序设置将前景设置为白色 我似乎
  • Azure 媒体服务仅限音频

    我们已开始使用 Azure 媒体服务 AMS 来编码 加密和托管我们的视频 MP4 效果良好 然而 除了视频之外 我们还有 MP3 音频文件 由于我们已经在使用 AMS 因此将它们放在这里也是有意义的 但我们遇到了问题 当我们尝试从门户进行
  • 如何在SQLite中的两个表之间复制数据?

    我有两个具有不同列的表 如下所示 table1 id title name number address table2 id phone name address 如何将数据 名称 地址 从表 1 复制到表 2 我的问题有两种情况 第一 t
  • 如何使用 Passport-saml 向 TestShib IdP 提供 SP 元数据?

    我有一个node js脚本 使用护照 saml https www npmjs com package passport saml 模拟 SP 我的目标是将其连接到此TestShib IdP https idp testshib org i
  • Java Sqlite Gradle

    我对 gradle 和 java 还很陌生 我有一个使用 sqlite 的项目 它通过 intellij idea 运行良好 但我无法从终端运行它 它会抛出异常 java lang ClassNotFoundException org sq
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的