【问题标题】:How should I unit test MySQL queries?我应该如何对 MySQL 查询进行单元测试?
【发布时间】:2020-11-06 15:36:37
【问题描述】:

我正在为我的 Python 模块构建一些单元测试,该模块通过 SQLAlchemy 与 MySQL 数据库交互。通过阅读,我收集到最好的方法是创建一个测试数据库,我可以查询它,就好像它是真实的一样。我已经这样做了,但是我应该如何测试模块中的现有查询,因为它们目前都指向实时数据库?

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

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

当我从unittest 运行函数时,我可以传入test_db。有没有更好的办法?

【问题讨论】:

    标签: python mysql unit-testing sqlalchemy python-unittest


    【解决方案1】:

    对于可扩展的测试方法,我建议使用中间 DAL 层,而不是决定将查询路由到哪个数据库。

    Testing with a Test Database

    【讨论】:

    • 谢谢@Vivek。好主意,我也买了这本书:-)。您是否建议使用两个 DAL 层 - 一个用于实时,一个用于测试?或者两者都用一个,然后在运行应用测试之前为此构建一些测试?
    • 应该只有一个 DAL 层,其中包含一些标志,可以帮助您的逻辑将 SQL 查询路由到不同的数据库。
    • 这就是我构建的。它也应该被测试?
    • 是的,您可以根据您的标志值测试最终的数据库连接字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2011-05-15
    • 2016-09-18
    • 2011-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多