我正在尝试使用模拟函数进行测试:
@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
我已经发现在测试期间使用中间件可能会导致问题:
但我的测试似乎在没有模块的情况下通过,并且失败了。
这里有什么问题?