Я пишу тест для зрения Django Rest Framework следующим тесно testing documentationОжидаемый вид будет называться с аргументом URL ключевого слова с именем «рк»
в Вот мой простой тест:
def test_patient_detail_api_opens(self):
factory = APIRequestFactory()
view =PatientDetailApi.as_view()
request = factory.get(reverse('api_pacjent', kwargs={'pk' :1}))
force_authenticate(request, user=self.user)
response = view(request)
self.assertEqual(response.status_code, 200)
Это тест не работает со следующим сообщением:
AssertionError: Expected view PatientDetailApi to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
Я не понимаю, почему это происходит и как это исправить.
- В
pk
kwargs есть в URL, - согласно документации нет необходимости добавлять значение
lookup-field
явно, если он по умолчанию вpk
, - вид открывается правильно, и все же этот тест не пройден. ..
Может кто-нибудь объяснить причину возникновения этой ошибки?
Вот соответствующий код:
'главные' url.py
:
urlpatterns = [
url(r'^pacjent/', include('pacjent.urls')),
]
pacjent.urls
выглядит следующим образом:
url(r'^api/szczegoly/(?P<pk>\d+)/$', PatientDetailApi.as_view(), name="api_pacjent"),
И PatientDetailApi
это:
class PatientDetailApi(generics.RetrieveUpdateAPIView):
model = Patient
serializer_class = PatientDetailsSerializer
queryset = Patient.objects.all()
authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = (IsAuthenticated,)
Это работает, когда вы на самом деле запрашиваете api вне своего теста, например, через Postman? Или если вы используете APIClient? –
Он делает. Это была недостающая часть, упомянутая RemcoGerlich. Спасибо за ваше предложение! – user1544500