Существует несколько пакетов, которые переопределяют систему настроек Django так, как ее можно использовать в проектах, не относящихся к Django; Вот пример использования simple-settings
:
# settings_dev.py
SPAM = 'eggs'
# settings_prod.py
SPAM = 'bacon'
# test_spam.py
from simple_settings import settings
def test_spam():
assert settings.SPAM in ['eggs', 'bacon']
Если передать настройки через переменную окружения, thins будет работать из коробки:
$ SIMPLE_SETTINGS=settings_dev pytest
======================================== test session starts ========================================
platform linux -- Python 3.6.6, pytest-4.0.2, py-1.7.0, pluggy-0.8.0
rootdir: /home/hoefling/projects/private/stackoverflow/so-54159045, inifile:
collected 1 item
test_spam.py . [100%]
===================================== 1 passed in 0.01 seconds ======================================
Если вы хотите передать настройки через аргумент командной строки, вам нужно сделать --settings
arg известным pytest
: создать файл conftest.py
со следующим содержимым:
def pytest_addoption(parser):
parser.addoption('--settings', action='store')
Теперь pytest
распознает --settings
arg, но просто игнорирует его в другом месте.
$ pytest --settings=settings_prod
======================================== test session starts ========================================
platform linux -- Python 3.6.6, pytest-4.0.2, py-1.7.0, pluggy-0.8.0
rootdir: /home/hoefling/projects/private/stackoverflow/so-54159045, inifile:
plugins: xdist-1.25.0, metadata-1.7.0, html-1.19.0, forked-0.2
collected 1 item
test_spam.py . [100%]
===================================== 1 passed in 0.01 seconds ======================================