Я пытаюсь создать тесты, включающие отправку запросов GET в мой API с помощью pytest-django, и мне нужна функция, используемая в представлениях, для имитации.
Я пробовал mocker из pytest-mock и unittest. mock.patch, и каждый раз, когда я высмеиваю эту функцию в каком-то тестовом примере, она остается и в других тестах.
Первый тестовый файл .py:
from unittest.mock import patch
from rest_framework.test import APITestCase
import pytest
@pytest.mark.django_db
class TestFirst(APITestCase):
@classmethod
def setUpClass(cls):
cls.patcher = patch(app.views.function)
cls.patcher.start()
@classmethod
def tearDownClass(cls):
cls.patcher.stop()
def test_something(self):
get_data = self.client.get('/some/url')
self.assertEqual(200, get_data.status_code)
, а затем проверка в совершенно другом файле .py:
from rest_framework.test import APITestCase
import pytest
@pytest.mark.django_db
class TestSecond(APITestCase):
def test_something_else(self):
get_data = self.client.get('/some/url')
self.assertEqual(200, get_data.status_code)
При отладке первого тестового примера, метод исправлен правильно. Однако при запуске второго теста метод остается исправленным, а фиктивный объект сохраняет количество полученных вызовов.
Я что-то упустил?
РЕДАКТИРОВАТЬ: я пробовал оба исправления файла, гдеМетод определен и имя метода в представлениях, но всегда продолжает получать один и тот же результат.
EDIT2: Стоит отметить, что когда я меняю порядок тестов, второй завершается правильно, но первый не можетпоэтому метод пропатчен и вызывает его непропатченным, поэтому не удается.