在测试期间禁用特定的Django中间件
如何仅在测试期间禁用特定中间件(我编写的自定义中间件)?有几个选项:在测试期间禁用特定的Django中间件,django,django-testing,django-middleware,Django,Django Testing,Django Middleware,如何仅在测试期间禁用特定中间件(我编写的自定义中间件)?有几个选项: 为测试创建一个单独的test\u settingssettings文件,然后通过以下方式运行测试: python manage.py test --settings=test_settings 如果test处于sys.argv if 'test' in sys.argv: # modify MIDDLEWARE_CLASSES MIDDLEWARE_CLASSES = list(MIDDLEWAR
- 为测试创建一个单独的
settings文件,然后通过以下方式运行测试:test\u settings
python manage.py test --settings=test_settings
- 如果
处于test
sys.argv
if 'test' in sys.argv: # modify MIDDLEWARE_CLASSES MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES.remove(<middleware_to_disable>)
如果sys.argv中有“测试”: #修改中间件类 中间件类=列表(中间件类) 中间件\u类。删除()
通过单点修改处理此问题的一个好方法是在Django项目的根目录下创建一个
conftest.py
文件,并将以下内容放入其中:
from django.conf import settings
def pytest_configure():
"""Globally remove the your_middleware_to_remove for all tests"""
settings.MIDDLEWARE.remove(
'your_middleware_to_remove')
在这个问题中给出了另一种禁用中间件的简洁方法
虽然对于您的情况可能不是最好的方法,但是如果您想在测试环境之外禁用中间件,这个问题提供了一个起点。是!!!我动态地修改了配置,因为我想避免指定一个新的设置文件!非常感谢;)@daveoncode您是如何动态实现对settings.py文件的修改的?这是否也可以用于视图和特定请求,还是仅用于测试用例?
@modify_settings(MIDDLEWARE={
'remove': 'django.middleware.cache.FetchFromCacheMiddleware',
})
def test_my_function(self):
pass
from django.conf import settings
def pytest_configure():
"""Globally remove the your_middleware_to_remove for all tests"""
settings.MIDDLEWARE.remove(
'your_middleware_to_remove')