Django测试和中间件

Kry*_*ski 8 python django django-middleware django-testing

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

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

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

小智 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
Run Code Online (Sandbox Code Playgroud)