test: skip image file size validator tests if Pillow is not installed

- Remove top-level PIL import from tests/test_validators.py
- Conditionally import PIL inside image-related tests and skip them if Pillow is unavailable
This commit is contained in:
Mahdi 2025-07-12 03:46:58 +03:30
parent 6c9e2266cd
commit 888df27dc3

View File

@ -8,7 +8,6 @@ from django import VERSION as django_version
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.db import DataError, models from django.db import DataError, models
from django.test import TestCase from django.test import TestCase
from PIL import Image
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ValidationError from rest_framework.exceptions import ValidationError
@ -1186,6 +1185,11 @@ class TestFileSizeValidatorIntegration(TestCase):
assert 'min_file_size' in serializer.errors['file'][0].code assert 'min_file_size' in serializer.errors['file'][0].code
def test_imagefield_max_size(self): def test_imagefield_max_size(self):
try:
from PIL import Image
except ImportError:
pytest.skip("PIL not available")
class ImageSerializer(serializers.Serializer): class ImageSerializer(serializers.Serializer):
image = serializers.ImageField(validators=[MaxFileSizeValidator(1024)]) image = serializers.ImageField(validators=[MaxFileSizeValidator(1024)])
@ -1207,6 +1211,11 @@ class TestFileSizeValidatorIntegration(TestCase):
assert 'max_file_size' in serializer.errors['image'][0].code assert 'max_file_size' in serializer.errors['image'][0].code
def test_imagefield_min_size(self): def test_imagefield_min_size(self):
try:
from PIL import Image
except ImportError:
pytest.skip("PIL not available")
class ImageSerializer(serializers.Serializer): class ImageSerializer(serializers.Serializer):
image = serializers.ImageField(validators=[MinFileSizeValidator(100)]) image = serializers.ImageField(validators=[MinFileSizeValidator(100)])