pytest-stub
Расширение pytest, позволяющее подменять зависимости имитаторами.
Репозиторий: https://github.com/idlesign/pytest-stub
Автор:
Игорь Стариков
Расширение представляет фикстуру
Если требуется подменить зависимость глобально, а не фикстурой, можно в корневом
Смотрите также:
* Анонс pytest-stub 0.1.0 для подмены пакетов, модулей, атрибутов
stub
, позволяющую имитировать наличие пакета/модуля путём временной манипуляции с sys.modules
. def test_some(stub):
stub.apply({
# Заменяем call_command автоматически сгенерированной функцией.
'django.core.management.call_command': '[func]',
# Заменяем класс BaseCommand автоматически сгенерированным классом.
'django.core.management.base.BaseCommand': '[cls]',
# Заменяем атрибут dummy сгенерированным объектом MagicMock.
'django.dummy': '[mock]',
# Полностью подменяем модуль cv2 на MagicMock.
'cv2': '[mock]',
# Иногда нам нужен всегда один и тот же MagicMock, а не генерируемый заново.
'numpy': '[mock_persist]',
# Подменяем несколько атрибутов в одном модуле некими объектами.
'django.conf': {
'settings': object(),
'some': True,
},
})
Если требуется подменить зависимость глобально, а не фикстурой, можно в корневом
conftest.py
вызвать stub_global()
. При этом подмена будет произведена до обнаружения тестов, а значит код в тестах сможет импортировать код, использующий зависимость. from pytest_stub.toolbox import stub_global
stub_global({
'cv2': '[mock_persist]',
})
Смотрите также:
* Анонс pytest-stub 0.1.0 для подмены пакетов, модулей, атрибутов