Как выполнить модульное тестирование API-интерфейса djano-rest-framework с данными вместе с полем изображения - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть модель, которая включает ImageField вместе с другими данными (int, text и т. Д.). И у меня есть API с методом POST для создания данных с файлом изображения.

Проблема в том, как протестировать этот POST API, который включает в себя поле изображения. Хотите создать поддельное изображение в тестовом файле вместо реального файла и как проверить это вместе с другими данными.

serializer.py

class CategorySerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Category
        fields = ( 'id','name','description','parent_id','start','end')
        read_only_fields = ('id','name','description','parent_id','start','end',)

class ServiceProviderSerializer(serializers. HyperlinkedModelSerializer):
    category = CategorySerializer(many=True, read_only=True)   
    class Meta:        
        model = ServiceProvider        
        fields = (
            'id',
            'country_code',
            'city',
            'zip_code',
            'service_type',
            'preferred',
            'display_bann',
            'detail_name',
            'detail_address',
            'detail_description1',
            'detail_description2',
            'photo',
            'category',
        )   
        read_only_fields = ('id',)

    def create(self, validated_data):
        """
        Overriding the default create method of the Model serializer.
        """
        # category_data = validated_data.pop('category')
        category_data = self.context['request'].data.get('category')
        service_provider = ServiceProvider.objects.create(**validated_data)
        category_data = json.loads(category_data)
        for category in category_data:
            categoryObj = Category.objects.get(pk=category['id'])
            service_provider.category.add(categoryObj)
        return service_provider

test.py

def setUp(self):
    self.new_service_provider = {
            'country_code': "DE",
            'city': "FRANKFURT AM MAIN",
            'zip_code': 60435,
            'service_type': "Fitness Studio",
            'preferred': True,
            'display_bann': "?",
            'detail_name': "City Fitness Frankfurt",
            'detail_address': "Trakehner Str. 5, 60487 Frankfurt am Main",
            'detail_description1': "Based on review, we suggest you to go to this studio",
            'detail_description2': "",
            'category':[{'id':self.category1.pk}]
        }

def test_post_service_provider(self):
            self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.adminUser.auth_token.key)
            # get API response
            response = self.client.post(
                reverse('service_provider-create'),
                data=self.new_service_provider,
                content_type='multipart/form-data'
            )
            print(response.data)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)

В настоящее время я не включил имя поля photo, так как не знаю, как его высмеивать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...