Django rest framework APITestCase, включая поля файлов

Как написать тест для следующего фрагмента кода? У меня проблемы с обработкой файлов. В папке media создаются лишние файлы, а также тест не работает должным образом. Поиск оказался бесполезным

# models.py
class Book(models.Model):
    title = models.CharField(max_length=255, unique=True)
    author = models.ForeignKey(Author, related_name='books', on_delete=models.CASCADE)
    description = models.TextField(verbose_name='about book', blank=True, null=True, max_length=2000)
    cover = models.ImageField(default='ebook_pictures/default.png')
    slug = models.SlugField(unique=True)
    pdf = models.FileField(validators=[FileExtensionValidator(['pdf'])])
    genres = models.ManyToManyField(Genre, related_name='books', blank=True)

# serializers.py
class BookSerializer(ModelSerializer):
    book_detail_url = HyperlinkedIdentityField(view_name='book-detail', lookup_field='slug', read_only=True)

    class Meta:
        model = Book
        fields = '__all__'
        extra_kwargs = {'slug': {'read_only': True}, }

# views.py
class BookViewSet(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    lookup_field = 'slug'
    permission_classes = [IsAdminOrReadOnly]
    filter_backends = [filters.SearchFilter]
    search_fields = ['title', ]

# urls.py
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')

# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media/'

# tests.py
class BookViewSetTestCase(APITestCase):

    def test_book_create(self):
        pass

Если вы не хотите, чтобы файлы создавались, вам следует поиздеваться над файловым хранилищем Django. Эта статья немного устарела, но может указать вам правильное направление:

https://joeray.me/mocking-files-and-file-storage-for-testing-django-models

Вернуться на верх