如何测试数据检索模块?

时间:2019-05-30 12:19:01

标签: python database unit-testing testing mocking

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

1 个答案:

答案 0 :(得分:1)

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

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与真实数据库的交互。