Unitest DRF С КОНТЕКСТОМ

Мне интересно, может ли кто-нибудь помочь мне с подходящим способом создания unitest в DRF при использовании контекста внутри сериализатора.

Как вы можете видеть в сериализаторе ниже, я добавляю поле под названием distance в мой сериализатор.

class CompanySerializer(serializers.ModelSerializer): """Сериализатор для компаний.""" distance = serializers.SerializerMethodField() класс Meta: model = Company fields = ['id', 'company_name', 'lat', 'long', 'logo', 'distance']

def get_distance(self, company):
    """Return context"""
    print(self.context)
    return self.context['distances'][company.pk]

Затем при вызове unitest я получаю ошибку: KeyError: 'distances'

COMPANY_URL = reverse('company:company-list')


def test_company_list_limited_to_user(self):
    """Test list of companies is limited to authenticated user."""
    other_user = create_user(
        email='other@example.com', password='password123'
    )
    create_company(user=other_user)
    create_company(user=self.user)

    res = self.client.get(COMPANY_URL)

    companies = Company.objects.filter(user=self.user)
    serializer = CompanySerializer(companies, many=True)
    self.assertEqual(res.status_code, status.HTTP_200_OK)
    self.assertEqual(res.data, serializer.data)

Есть ли лучший способ написать этот тест, чтобы он прошел? Я проверил, контекстное расстояние создается и передается в сериализатор без проблем, но тест не проходит :/

Спасибо большое!

Добрые пожелания Виктор Алмейда

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