1

我正在尝试为基于 API 的服务构建一个测试环境。理想情况下,我希望每个测试都从一个默认数据库开始。

让这件事变得有趣的是,我想通过 API 触发写入、读取和更新,这将像任何其他正常的日子一样访问数据库。我只是想确定回滚这些更改的最佳方法。我知道事务,但那些似乎依赖于连接,由于 Web 应用程序的性质,我不能保证每个操作都会使用相同的连接。

我在这方面的第一次尝试可能涉及每次都导入整个数据库。我知道这会奏效,但它可能会很慢。

交易似乎可以工作,但我对以这种方式使用它们相对较新。

4

1 回答 1

0

如果您确实需要验证测试数据是否已写入数据库,则不是您要查找的事务。您将永远无法看到尚未提交的事务。

如果您这样做是为了对代码进行单元测试,并且您实际上不需要验证写入数据库中的数据,那么您应该创建一个数据库模拟来使用而不是真正的数据库。如果您需要实际验证数据库写入,并且如果您知道每个测试只会更改数据库中的几个表,那么您可能想要做的一件事是让 SQL 可用于删除/创建/填充关注的表,以便您可以在每次测试执行之前执行此操作,而不必处理 mysqldump 的完整导入。

我之前合作过的一位测试人员采用了类似的方法,在他的测试数据库中包含模板表,并在每次测试运行之前复制每个适用的表(使用CREATE TABLE test_table LIKE template_tableand INSERT INTO test_table SELECT * FROM template_table),然后在每次测试的拆卸阶段删除测试表。

于 2013-02-12T18:18:07.743 回答