Проблема, скорее всего, связана с тем, что при запуске тестов через команду `./manage.py test`, Django использует собственный механизм поиска и загрузки тестовых классов, который может приводить к игнорированию переопределенных методов, патчей и моков.
Для исправления этой проблемы можно применить следующие подходы:
1. Используйте декоратор `override_settings` вместо `patch`, чтобы переопределить настройки Django для тестового класса. Например:
```python
from django.test import TestCase, override_settings
@override_settings(MY_SETTING='new_value')
class MyTestCase(TestCase):
...
```
Декоратор `override_settings` переопределит значение `MY_SETTING` только для этого тестового класса.
2. Если вам нужно переопределить метод, который вызывается до запуска тестов, вы можете использовать декоратор `@classmethod` и изменить его поведение. Например:
```python
from django.test import TestCase
class MyTestCase(TestCase):
@classmethod
def setUpTestData(cls):
super().setUpTestData()
# Ваш код для переопределения метода setUpTestData()
```
3. Если источник проблемы связан с загрузкой тестов из директории, попробуйте явно указать путь к вашему тестовому классу при запуске команды `./manage.py test`. Например:
```
./manage.py test my_app.tests.MyTestCase
```
где `my_app.tests.MyTestCase` - путь к вашему тестовому классу.
Надеюсь, эти подходы помогут вам исправить проблему с применением патчей и переопределением методов при запуске тестов в Django.