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)
Есть ли лучший способ написать этот тест, чтобы он прошел? Я проверил, контекстное расстояние создается и передается в сериализатор без проблем, но тест не проходит :/
Спасибо большое!
Добрые пожелания Виктор Алмейда