寻找一个用于模拟数据库的Python库

16 投票
5 回答
11105 浏览
提问于 2025-04-16 17:23

我快要完成一个大学项目,里面用到了Python。不过,我的团队在测试用例上有点短缺。我们需要更多的测试用例,特别是针对数据库的测试用例。这时候就需要用到“模拟”这个概念了。我们需要一个专门针对Python的库,来模拟数据库,这样测试用例就不用用SQL,也不需要访问真实的数据库。我们用的真实数据库是MySQL。对我来说,找到一个简单好用的Python数据库模拟库有点困难。请问哪个库最适合我们用来做测试用例?或者有没有更好的方法在Python中测试数据库而不去碰它?非常感谢你的建议!

5 个回答

2

我个人习惯把单元测试写成使用一个单独的测试数据库,所以我通常会有一个叫做 testing.conf 的文件,里面包含我的数据库信息,这个文件和我常用的 development.conf 以及 production.conf 文件是分开的。这样一来,我的单元测试就能更接近实际代码在生产环境中运行时的条件。

举个例子,我最近开发了一个Python库,用户需要调用一个模块级的 initialize 函数,并传入配置文件的名称。这个 initialize 函数会使用 ConfigParser 模块来解析配置文件,启动它需要运行的线程,创建urllib处理器,建立数据库连接等等。

这样的设置让单元测试变得很简单,因为你只需要在执行测试之前调用 initialize 函数,并传入一个指向测试数据库的配置,就可以了。

5

如果你在使用Django框架,数据填充(fixtures)可以帮你解决问题。我不太清楚你说的“模拟库”是什么意思,但数据填充可以让你在数据库里填入测试数据。这样你就可以在测试案例中使用这些数据。每次测试结束后,这些测试数据会被删除。

6

如果你真的必须使用模拟对象,而不是其他人提到的Django工具,我建议你可以试试Fudge或者Mock

撰写回答