Как обслуживать медиафайлы при тестировании Django DRF с помощью APILiveServerTestCase?
У меня есть несколько тестов Django DRF, которые выглядят следующим образом:
from django.conf import settings
from rest_framework.test import APILiveServerTestCase, RequestsClient
class APITests(APILiveServerTestCase):
def setUp(self):
self.client = RequestsClient()
def test_endpoints(self):
with self.settings(MEDIA_ROOT=f"{settings.BASE_DIR}/test_media/"):
# Upload file
self.client.post(
URL,
files={"my_file": ("filename", b"abc")},
)
# Download the file we just uploaded
response = self.client.get(
URL_to_FILE,
)
Загрузка работает нормально, но загрузка не работает с ошибкой 404, потому что тестовый веб-сервер не обслуживает медиафайлы, а точнее, не обслуживает их из моей пользовательской папки MEDIA_ROOT=f{settings.BASE_DIR}/test_media/
Добавление записей в urls.py
для того, чтобы Django обслуживал медиафайлы, не сработало.
В Django, похоже, есть подкласс TestCase, специально предназначенный для этого: django.contrib.staticfiles.testing.StaticLiveServerTestCase
. В DRF нет ничего подобного, но я решил, что могу сделать что-то вроде этого:
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from rest_framework.test import APIClient
class APIStaticLiveServerTestCase(StaticLiveServerTestCase):
client_class = APIClient
class APITests(APIStaticLiveServerTestCase):
....
Это тоже не сработало.
Есть ли способ заставить это работать?