Python 为数据库测试ORM

Python 为数据库测试ORM,python,unit-testing,testing,orm,rethinkdb,Python,Unit Testing,Testing,Orm,Rethinkdb,我马上就要完成Python中的ORM for ReflectionDB了,我一直在写测试。特别是在涉及save()、get()和delete()操作的情况下。建议使用什么方法来测试我的ORM在保存、删除或获取文档时是否执行了它应该执行的操作 现在,我为套件中的每个测试创建一个数据库,用测试模型所需的所有表填充它(这需要很多时间,几乎5秒/测试!),在我的模型上运行操作(例如:save()),然后手动对数据库运行一个查询(使用RejectionDB的Python驱动程序)查看数据库中的所有内容是否

我马上就要完成Python中的ORM for ReflectionDB了,我一直在写测试。特别是在涉及
save()
get()
delete()
操作的情况下。建议使用什么方法来测试我的ORM在保存、删除或获取文档时是否执行了它应该执行的操作

现在,我为套件中的每个测试创建一个数据库,用测试模型所需的所有表填充它(这需要很多时间,几乎5秒/测试!),在我的模型上运行操作(例如:
save()
),然后手动对数据库运行一个查询(使用RejectionDB的Python驱动程序)查看数据库中的所有内容是否都已更新


现在,我觉得这不太合适;也许有另一种方法来编写这些测试,或者我可以设计测试,而无需对数据库运行那么多查询。有没有关于如何改进的想法,或者关于如何真正做到这一点的建议?

您可以为所有测试只创建一次所有数据库/表

您还可以使用原始数据目录: -启动数据库 -创建所有数据库/表 -承诺吧


在每次测试之前,复制数据目录,在副本上启动数据库,然后在测试完成后,删除复制的数据目录。

每个测试套件都有自己的模型,因此有自己的表,因此我不能也不应该为所有测试使用相同的数据库/表。此外,我将启动RejectionDB,然后运行所有测试,我不认为每次测试都启动和停止RejectionDB是一个好的选择-在我目前的情况下,性能损失可能是相同的。获得一点时间的方法是只清理表,而不是删除/重新创建它们。我也在维护一个ORM,我也只是删除/创建表,而且我必须承认,它有点慢。我知道,你在这方面做得很好!:)好吧,那么,很高兴知道其他程序员也有同样的方法……那么你对我的另一个问题,关于测试方法,有什么看法?如何测试您的模型操作是否执行了预期的操作?我也执行了相同的操作来测试save/delete/update/etc。我基本上运行命令,然后查询数据库以确保文档已正确保存/删除/更新。我认为,您在这里做得再好不过了,因为您可能不会发送适当的查询(在执行更新时),但仍然会得到预期的结果(如
replacemented:1
),唯一的方法是模拟一个数据库Python,但这是相当多的工作:/