R testthat:设置可用于所有测试的数据库连接
我的R包修改远程数据库中的数据,我想用R testthat:设置可用于所有测试的数据库连接,r,database-connection,testthat,R,Database Connection,Testthat,我的R包修改远程数据库中的数据,我想用testthat编写一些测试 我知道我可以模拟数据库,但我宁愿简单地使用一个我们的开发数据库 如何使db连接可用于所有需要它的测试,同时确保创建的任何连接都已销毁?很明显,连接应该在设置中进行,断开连接应该在拆卸中进行,但我没有成功 我曾尝试将以下代码放入tests/testthat.R或助手文件tests/testthat/helper-\u,但没有成功 设置({ #db_connect只是RMariaDB::dbConnect和日志的基本包装器 db_c
testthat
编写一些测试
我知道我可以模拟数据库,但我宁愿简单地使用一个我们的开发数据库
如何使db连接可用于所有需要它的测试,同时确保创建的任何连接都已销毁?很明显,连接应该在设置中进行,断开连接应该在拆卸中进行,但我没有成功
我曾尝试将以下代码放入tests/testthat.R
或助手文件tests/testthat/helper-\u
,但没有成功
设置({
#db_connect只是RMariaDB::dbConnect和日志的基本包装器
db_con编辑:test-connect_init中的dbDisconnect。此结构在从数据库接收数据(一次或几次)的工作流中效果最佳
免责声明:以下内容已通过Impala成功测试
我选择了寻源方式,创建了一个在脚本和测试中调用的connect_init.R函数:
组织
R
├── 乌提尔斯
| ├── connect_init.R
| ├── df_import.R
├── 清洁的
| ├── 数据_clean.R
测验
├── 测试
│ ├── 测试连接.R
│ ├── 测试导入.R
│ └── 测试清洁
└── testthat.R
过程
connect_init.R
connect_init从testthat
setup()
块中的代码立即在干净的环境中运行
我相信这意味着,如果您想保存在设置
环境中创建的任何对象,那么您需要将它们放置在全局环境中
设置({
db_con因此,换句话说,您在每个测试中手动连接和断开连接?如果是,必须有更好的方法…在这种情况下,如果其中一个测试失败,连接将保持打开状态(而拆卸
即使测试失败也始终运行)。您是对的:-我需要在测试-连接中添加断开连接(它包含在测试导入中)。-此处提出的过程没有针对您的工作流进行优化(我在从Impala导入一次(或几次)数据时使用了它)。
tests
├── testthat
│ ├── helper-_.R
│ ├── test-connect.R
│ └── test-questions.R
└── testthat.R