9👍
✅
There are several options:
-
create a separate
test_settings
settings file for testing and then run tests via:python manage.py test --settings=test_settings
-
modify your
settings.py
on the fly iftest
is insys.argv
if 'test' in sys.argv: # modify MIDDLEWARE_CLASSES MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES.remove(<middleware_to_disable>)
Hope that helps.
13👍
Also related (since this page ranks quite high in search engines for relates queries):
If you’d only like to disable a middleware for a single case, you can also use @modify_settings
:
@modify_settings(MIDDLEWARE={
'remove': 'django.middleware.cache.FetchFromCacheMiddleware',
})
def test_my_function(self):
pass
- How do I get django runserver to show me DeprecationWarnings and other useful messages?
- How to test a Django on_commit hook without clearing the database?
11👍
https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.override_settings
from django.test import TestCase, override_settings
from django.conf import settings
class MyTestCase(TestCase):
@override_settings(
MIDDLEWARE_CLASSES=[mc for mc in settings.MIDDLEWARE_CLASSES
if mc != 'myapp.middleware.MyMiddleware']
)
def test_my_function(self):
pass
4👍
A nice way to handle this with a single point of modification is to create a conftest.py
file at the root of Django project and the put the following contents in it:
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')
- Libmysqlclient.18.dylib image not found when using MySQL from Django on OS X
- Django 3.1: StreamingHttpResponse with an async generator
- Linking django and mysql containers using docker-compose
- Django: test failing on a view with @login_required
- How do I hide the field label for a HiddenInput widget in Django Admin?
Source:stackexchange.com