Существует простой трюк для переопределения прибора с пользовательским импл. Просто объявите прибор с тем же именем и подписью в вашем локальном тестовом коде (я обычно делаю это в conftest.py
в корне проекта). Примеры:
"Inheritance"
# conftest.py
import pytest
@pytest.fixture(scope='session')
def django_db_setup(
request,
django_db_setup,
django_test_environment,
django_db_blocker,
django_db_use_migrations,
django_db_keepdb,
django_db_createdb,
django_db_modify_db_settings,
):
# do custom stuff here
print('my custom django_db_setup executing')
Обратите внимание, у меня есть аргумент django_db_setup
в пользовательском устройстве django_db_setup
- это гарантирует, что исходный прибор вызывается раньше, чем пользовательский.
"переопределение"
Если вы пропустите аргумент, пользовательский прибор заменит исходный, поэтому он не будет выполнен:
@pytest.fixture(scope='session')
def django_db_setup(
request,
django_test_environment,
django_db_blocker,
django_db_use_migrations,
django_db_keepdb,
django_db_createdb,
django_db_modify_db_settings,
):
print((
'my custom django_db_setup executing - '
'original django_db_setup will not run at all'
))
Кстати, это еще один удобный прием, когда вы, например, хочу отключить прибор, который определен в другом месте.