Django Test - django.urls.exceptions.NoReverseMatch
У меня возникают ошибки при выполнении тестов
django.urls.exceptions.NoReverseMatch: Reverse for 'interfacegraph' with no arguments not found. 1 pattern(s) tried: ['interfacegraph/(?P<device>[A-Z0-9.]{12,15})/(?P<interface>\\d+)/(?P<graph>\\d+)/graph/']
Вот urls.py
urlpatterns = [
re_path(r'interfacegraph/(?P<device>[A-Z0-9.]{12,15})/(?P<interface>\d+)/(?P<graph>\d+)/graph',
InterfaceGraphViewSet.as_view({'get': 'graph'}), name='interfacegraph'),
]
Вот строка кода в тестах, где тест выбрасывает ошибки
response = self.client.get(
reverse('interfacegraph'), {'device': 'device', 'interface': 'interface', 'graph': 'traffic'},
content_type='application/json')
Набор представлений расширяет generics viewset
class InterfaceGraphViewSet(viewsets.GenericViewSet):
Есть идеи, как это проверить?
На самом деле вы не передаете аргументы в обратную функцию. Используйте ее таким образом:
reverse('interfacegraph', kwargs={'device': 'device', 'interface': 'interface', 'graph': 'traffic'})
Также другая проблема здесь:
(?P<device>[A-Z0-9.]{12,15})
Вы передаете 'device'
, что не соответствует данному регексу. Он проверяет заглавные буквы и цифры, поэтому в данной строке у вас есть ровно 0
случаев.
Узнайте о regex. Вы также можете не использовать его вообще, например:
path('interfacegraph/<str:device>/<int:interface>/<int:graph>/graph', ...)