Pytest потерпел неудачу при тестировании API с правильным URL и данными

Когда я создаю Clinic через Swagger или Postman, он работает нормально и поле с теми же данными при тестировании!

модель

class Clinic(models.Model):
   name = models.CharField(max_length=50)
   price = models.FloatField()
   doctor = models.ForeignKey(User, on_delete=models.CASCADE, related_name='doctor_clinic')
   date = models.ManyToManyField(ClinicDate, related_name='clinic_date')

сериализатор

class ClinicDateSerializers(serializers.ModelSerializer):
   class Meta:
          model = ClinicDate
          fields = ['day','start_time', 'end_time']


class ClinicSerializers(serializers.ModelSerializer):
   doctor = serializers.StringRelatedField(required=False)
   date = ClinicDateSerializers(many=True, required=True)
   class Meta:
          model = Clinic 
          fields = ['name', 'price', 'doctor', 'date']

   def create(self, validated_data):
          dates_data = validated_data.pop('date')
          user =  self.context['request'].user
          clinic = Clinic.objects.create(doctor=user, **validated_data)
          for date_data in dates_data:
                 dt = ClinicDate.objects.create(**date_data)
                 clinic.date.add(dt)
          return clinic

URL

path('add/', views.ClinicCreateView.as_view(), name='clinic-create'),

pytest

@pytest.mark.django_db
class TestClinic:

   @pytest.fixture
   def setup(self):
          User.objects.create_doctor(email="doctor1@doctoronline.com", password="12345")
          data = {
                 'email':'doctor1@doctoronline.com',
                 'password':'12345', 
          }
          response = client.post(reverse('token_obtain_pair_doctor'), data=data)
          self.access_token = response.json()['access']       
          client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.access_token)

   def test_valid_create_clinic(self, setup):
          data = {
                 "name": "Clinic 1",
                 "price": 1000,
                 "date": [
                        {
                        "day": "SATURDAY",
                        "start_time": "2021-08-24T21:21:17.960Z",
                        "end_time": "2021-08-24T21:21:17.960Z"
                        }
                    ]
                 }
          response = client.post(reverse('clinic-create'), data=data)
          assert response.status_code == status.HTTP_201_CREATED  

enter image description here enter image description here

Подсказка нет проблем с setup или data

Просто для протокола: Проблема была в том, что я имею дело с вложенным сериализатором, а по умолчанию формат multipart не поддерживает вложенные данные, поэтому я просто хочу установить `formate = 'json'

response = client.post(reverse('clinic-create'), data=data, format='json')
Вернуться на верх