您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

尝试在Flask-SQLAlchemy中模拟模型的问题

尝试在Flask-SQLAlchemy中模拟模型的问题

因此,在敲打键盘几个小时后,我找到了解决方案。问题似乎是以下原因(如果有人知道的更好,请纠正我)。

当我运行时mock.create_autospec(User),模拟模块尝试检查的所有属性,User以为其将吐出的Mock对象创建适当的规格。发生这种情况时,它会尝试检查属性User.query,只有在Flask应用程序范围内时才能评估该属性

发生这种情况是因为在User.query评估时,创建了一个需要有效会话的对象。该会话由Flask-sqlAlchemy内部类create_scope_session上的方法创建sqlAlchemy。

方法实例化一个称为SignallingSession__init__方法的类sqlAlchemy.get_appRuntimeError数据库中没有注册任何应用程序时,此方法将引发。

通过修补SignallingSession方法,一切正常。由于我不想与数据库进行交互,所以可以:

import unittest
import datetime

import mock

from actions import age


@mock.patch("flask_sqlalchemy.SignallingSession", autospec=True)
class TestModels(unittest.TestCase):

    def test_age(self, session):
        import database

        user = mock.create_autospec(database.User)
        user.birthday = datetime.date(year=1987, month=12, day=1)
        print age(user)
Python 2022/1/1 18:28:26 有170人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶