Django测试和中间件

时间:2012-12-06 15:27:50

标签: python django django-testing django-middleware

我在使用Django测试Client()测试中间件时遇到问题。它似乎特别模拟会话中间件。但是,由于它基于RequestFactory,因此它似乎不运行任何中间件。

有没有办法让测试客户端为请求和响应两者应用中间件?我知道通常有其他方法专门测试中间件。但是,在某些情况下,我想用完整的中间件堆栈测试请求。这样做的任何方式?

我正在考虑扩展Client并修改其request()类并在函数开头通过中间件堆栈运行请求,并通过函数底部的中间件堆栈响应。你认为这样的事情会起作用吗?如果没有,你能指出一些可以解释原因的资源吗?

1 个答案:

答案 0 :(得分:6)

您可能需要override_settings

请参阅https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.override_settings

@override_settings(MIDDLEWARE_CLASSES=(
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
))
class ViewTest(TestCase):

    def setUp(self):
        pass