mysql - 在 RUnit 测试套件中使用 .setUp() 和 .tearDown() 函数

标签 mysql r rmysql runit

我的 R 测试存在以下问题。我有测试函数需要更改数据库、计算结果、检查这些结果是否等于测试值并清理数据库。我正在尝试使用来自 MySQL 的事务和来自 RMySQL 的 dbBegin(con) 和 dbRollback(con) 函数。

我正在尝试运行以下代码:

.setUp <- function() {
dbBegin(con)
}

.tearDown <- function() {
dbRollback(con)
}

test.function1 <- function() {
....
}

test.function2 <- function() {
....
}

使用测试套件

test.suite <- defineTestSuite("example",
                              dirs = file.path("tests"),
                              testFileRegexp = '*.r')

test.result <- runTestSuite(test.suite)
printTextProtocol(test.result)

但是,当我运行多个函数时,我得到了

Error in .local(conn, statement, ...) : 
  could not run statement: Duplicate entry '-1' for key 'PRIMARY'

这意味着我永远不会回滚我在数据库中写入的内容。

谁能指出上面的代码有什么问题和/或如何在 R + RMySQL 中编写测试来测试内部事务?

谢谢, 弗拉基米尔

最佳答案

这是测试改变 MySQL 数据库的 R 函数的正确方法。由于打字错误,我收到了错误。

关于mysql - 在 RUnit 测试套件中使用 .setUp() 和 .tearDown() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623430/

相关文章:

mysql - 从 Mysql 中获取日期时间

r - 在 R 中循环以读取许多文件

替换其他数据框的值

mysql - R 编程 - 将日语字符插入 MySQL

mysql - 在 R 上一次执行多个 SQL 命令

mysql - 在 View 中动态获取表中的所有列

mysql - 数据库中存储了错误的日期时间

r - 当 sd 参数包含向量时,R 中的 rnorm 返回什么?

r - 是否有任何选项可以定义 dbGetQuery 的特定时间限制

mysql - 在 Mysql 中使用 id 从表中删除许多行