патч не работает с pytest, если не указан каталог - PullRequest
0 голосов
/ 02 марта 2019

У меня странная проблема с 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

Чем обусловлено различие выше?
А как можно сделать исправление исправным в обоих случаях?

Заранее спасибо.

...