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