python - 如何测试数据检索模块?
问题描述
我正在做一个项目,并有一个用 python 编写的数据检索模块。它所做的只是使用字符串操作构建查询,然后使用另一个模块(连接模块)执行查询。我想正确地进行单元测试。有人对技术有什么建议吗?嘲笑是一种正确的方法吗?
解决方案
您的代码由计算部分(构建查询字符串)和交互部分组成,其中执行与数据库的实际通信。如果将这两者结合起来,代码如下所示:
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
与真实数据库的交互。
推荐阅读
- c# - 是否可以只刷新数据网格中的一列?wpf
- javascript - 使用 jQuery / Javascript 更改导航样式
- git - 如何在 git 存储库中使用“人工根提交”?
- python - SVM 预测(SVC 与 SVR)
- vue.js - Vue JS 导航栏不需要的过渡
- python - DatabaseError: ORA-01555: 快照太旧
- angular - 如何从api中拆分数据以获取图表
- c++ - std::array: size 和 max_size 返回相同的数字,认为数组中的元素较少
- node.js - Docker HEALTHCHECK 在 nodejs express 应用程序中失败
- matlab - Matlab Stepwiselm:如何从最优回归规范中提取变量(即规范最小化 BIC)?