首页 > 解决方案 > 模拟 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。

标签: pythonunit-testingsqlalchemymocking

解决方案


推荐阅读