python - 模拟 sqlalchemy 游标
问题描述
我有一些这样的代码我想写一个测试:
def fetch_results(cursor):
results = []
columns = [column[0] for column in cursor.description]
for row in cursor.fetchall():
results.append(dict(zip(columns, row)))
return results
def call_sql(self, sql):
cursor = self._session.execute(sql).cursor
results = self.fetch_results(cursor)
在我的测试中,我这样做:
mock_session = Mock()
mock_repo = DataRepository(mock_session)
mock_session.execute\
.return_value.cursor\
.return_value = [return_dict]
rv = mock_repo.call_sql(sql)
当我运行测试时,我得到:
columns = [column[0] for column in cursor.description]
TypeError: 'Mock' object is not iterable
无法弄清楚如何模拟或修补 cursor.description。
解决方案
推荐阅读
- android - 通过直接复制其 SQLite 文件来执行应用程序数据库备份是否安全?
- php - 使用 AMPPS 在 Mac 上获取 PHP 7.2
- java - 在没有通用接口的情况下调用通用方法
- angular - PrimeNg 确认对话框未打开
- latex - LaTeX中的逐项/枚举列表结构
- bash - 从容器内部检查 docker 容器的统计信息
- java - 我怎么知道应用程序是链接到 wifi 或以太网使用 java?
- laravel - 为什么当我更改标签时组件会消失?
- sql - 如何创建将一个表中的序列号添加到另一个表的 INSERT 查询
- android-studio-3.4 - Android Studio 加载错误的项目