我该如何对MySQL查询进行单元测试?

3

我正在为我的Python模块建立一些单元测试,该模块通过SQLAlchemy与MySQL数据库进行交互。从阅读资料得知,最好的方法是创建一个测试数据库,可以像真实数据库一样查询。我已经做到了这一点,但如何测试模块中现有的查询语句,因为它们当前都指向实时数据库?

我想到的唯一想法是执行以下操作:

def run_query(engine, db_name='live_db')
    engine.execute(f'SELECT * FROM {db_name}.<table_name>')

当我在从 unittest 中运行该函数时,我可以传入 test_db。是否有更好的方法?

1个回答

3

为了实现可扩展的测试方法,我建议使用中间数据访问层(DAL Layer),该层将决定查询应路由到哪个数据库。

使用测试数据库进行测试


谢谢@Vivek。好主意,我也买了这本书:-)。你会推荐有两个DAL层 - 一个用于实时环境,一个用于测试吗?还是只有一个用于两者,并在运行应用程序测试之前构建一些测试? - Jossy
1
应该只有一个 DAL 层,并在其中设置一些标志,这些标志应该帮助您的逻辑将 SQL 查询路由到不同的数据库。 - Vivek Srivastava
这就是我所构建的。它也应该进行测试吗? - Jossy
1
是的,您可以根据标志值测试最终的数据库连接字符串。 - Vivek Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接