测试使用MySQL的Python应用程序

8 投票
2 回答
3641 浏览
提问于 2025-04-15 12:42

我想为一个使用MySQL的应用程序写一些单元测试。不过,我不想连接到一个真实的MySQL数据库,而是想连接到一个临时的数据库,这样就不需要任何SQL服务器了。

有没有什么库可以用?我在谷歌上找不到相关的东西。有没有什么设计模式可以参考?需要注意的是,依赖倒置原则(DIP)不适用,因为我还是需要测试被注入的类。

2 个回答

4

我之前用过 python-mockmox 来做一些测试,这些测试非常轻量,完全不需要任何 SQL 服务器。不过,如果你需要做更全面、更深入的测试,启动一个本地的 MySQL 实例并填充数据其实也不是太麻烦。

可惜的是,SQLite 和 MySQL 的 SQL 语法差别挺大,所以如果你想用 SQLite 来做测试,就有点不太实际,除非你使用一些 ORM(对象关系映射)工具,比如 Django、SQLObject 或 SQLAlchemy,这些工具可以帮你隐藏这些语法上的差异。

12

其实没有一个很好的办法来做到这一点。你想要在一个真实的MySQL服务器上运行你的查询,不然你就不知道它们是否能正常工作。

不过,这并不意味着你必须在一个生产环境的服务器上运行它们。我们有一些脚本可以创建一个单元测试数据库,然后在单元测试完成后把它删除。这样我们就不需要维护一个固定的测试数据库,但仍然可以在真实的服务器上进行测试。

撰写回答