Django模拟消息失败,模块视图

时间:2016-03-17 17:45:28

标签: python django unit-testing mocking django-views

我正在尝试使用模拟函数进行测试:

@mock.patch('apps.myapp.views.messages')
def test_message_get_called(self, messages):
    # tests
    assert messages.add_message.called

这个测试默认完美传递,这里没问题。 因为我有一个很长的views.py文件,所以我尝试重构。我没有创建单个文件,而是创建了一个名为views的文件夹,将views.py置于all.py内并添加以下__init__.py

from __future__ import absolute_import   
from .all import ( 
    ....
    )

因此,我将所有视图类导入此文件以访问它们。这使得应用程序没有问题,所以我猜测测试应该没问题。

但事实证明测试失败了:

AttributeError: <module 'apps.myapp.views' from '.../views/__init__.pyc'> 
does not have the attribute 'messages'

所以我在导入列表中添加messages。我收到以下错误:

MessageFailure: You cannot add messages without installing
django.contrib.messages.middleware.MessageMiddleware

我已经发现在测试期间使用中间件可能会导致问题:

但我的测试似乎在没有模块的情况下通过,并且失败了。

这里有什么问题?

0 个答案:

没有答案