方法模拟和sqlalchemy(psycopg2)

2024-06-16 11:01:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法,它执行一些工作,返回一些值并将其传递给sqlalchemy查询。 在测试的情况下,我尝试模拟这个方法,但是得到了异常:sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'MagicMock'

我有代码,如下所示:

from mock import patch
from sqlalchemy import Integer, Column

from pr.core.model import Base
from pr.core.model import Session


class SomeModel(Base):
    __tablename__ = 'table'
    id = Column(Integer, primary_key=True)


class SomeObj(object):
    def some_method(self):
        return 1

    def call(self):
        return Session.query(SomeModel).filter(SomeModel.id == self.some_method()).all()


def main():
    with patch('__main__.SomeObj.some_method') as mocked:
        SomeObj().call()
        assert mocked.called
if __name__ == '__main__':
    main()

在调用了这样的代码后,我得到了这样的回溯:

^{pr2}$

有什么方法可以恰当地模仿这个方法吗?在


Tags: 方法代码fromimportselfsqlalchemymaindef