import os import shutil import warnings import django def pytest_addoption(parser): parser.addoption('--sqlite', action='store_true') parser.addoption( '--deprecation', choices=['strict', 'log', 'none'], default='log') def pytest_configure(config): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tests.settings') deprecation = config.getoption('deprecation') if deprecation == 'strict': warnings.simplefilter('error', DeprecationWarning) warnings.simplefilter('error', PendingDeprecationWarning) warnings.simplefilter('error', RuntimeWarning) if deprecation == 'log': warnings.simplefilter('always', DeprecationWarning) warnings.simplefilter('always', PendingDeprecationWarning) warnings.simplefilter('always', RuntimeWarning) elif deprecation == 'none': # Deprecation warnings are ignored by default pass if config.getoption('sqlite'): os.environ['DATABASE_ENGINE'] = 'django.db.backends.sqlite3' os.environ['DATABASE_NAME'] = ':memory:' django.setup() def pytest_unconfigure(config): # remove tests/public/media folder from django.conf import settings shutil.rmtree(settings.MEDIA_ROOT, ignore_errors=True)