首页 > 解决方案 > 如何测试数据检索模块?

问题描述

我正在做一个项目,并有一个用 python 编写的数据检索模块。它所做的只是使用字符串操作构建查询,然后使用另一个模块(连接模块)执行查询。我想正确地进行单元测试。有人对技术有什么建议吗?嘲笑是一种正确的方法吗?

标签: pythondatabaseunit-testingtestingmocking

解决方案


您的代码由计算部分(构建查询字符串)和交互部分组成,其中执行与数据库的实际通信。如果将这两者结合起来,代码如下所示:

def fetchData(self):
    query = ... some string building logic here
    results = ... database access using query

在这样的代码中,只是为了检查单元测试中的字符串构建逻辑,您将模拟数据库访问(以避免由于各种原因在单元测试中对数据库的依赖)。在随后的集成测试中,您将测试fetchData与真实数据库的交互。

另一种方法是将算法部分(查询字符串的创建)提取到单独的方法中,以便您可以轻松地独立测试该部分。

def buildQuery(self):
    query = ... some string building logic here
    return query

def fetchData(self):
    query = self.buildQuery()
    results = ... database access using query

这使您的单元测试更简单,因为buildQuery您不需要对数据库进行任何模拟。同样,在集成测试中,您将测试fetchData与真实数据库的交互。


推荐阅读