Патч не работает с pytest, если не указан каталог
У меня странная проблема с pytest и фиктивным исправлением.
Мое приложение django вызывает API валютных бирж при получении запроса.
Я хочу исправить их во время тестирования, но это не работает.
Команда ниже выполнена успешно. Он не отправляет запросы на реальные серверы обмена.
pipenv run pytest --reuse-db myapp
Но приведенная ниже команда не выполняется, поскольку она отправляет запросы на реальные серверы API обмена. Кажется, исправление не работает.
pipenv run pytest --reuse-db
Структура проекта выглядит следующим образом.
django_proj/
django_proj/
myapp/
views.py
urls.py
backends/
backend1.py
backend2.py
tests/
test_views.py
test_views.py
class MockBackend1:
# Some mock methods
# They returns mock values instead of sending requests to real servers.
class MockBackend2:
# Some mock methods
# They returns mock values instead of sending requests to real servers.
@patch('myapp.backends.backend1.Backend1', MockBackend1)
@patch('myapp.backends.backend2.Backend2', MockBackend2)
class TestListAPIView:
@pytest.fixture
...
def test_list(self, client, params):
"""Test list."""
response = client.get(
reverse("myapp:list"),
data=params
)
content = response.json()
# sample assertion
asset content == mocked_content
Что вызывает разницу выше?
И как вы можете сделать исправления работать правильно в обоих случаях?
Заранее спасибо.