Django pytest как протестировать представление с аргументом(id)

У меня вопрос по использованию pytest. Это мои самые первые тесты. У меня есть 2 представления, которые я хочу протестировать (простейшим возможным способом).

Просмотров:

class MenuView(View):
    def get(self, request):
        return render(request, 'diet_app/menu.html')

class CuisineDetailsView(View):
    def get(self, request, id):
        cuisine = Cuisine.objects.get(id=id)
        recipes = cuisine.recipe_set.all()
        return render(request, 'diet_app/cuisine_details.html', {'cuisine': cuisine, 'recipes': recipes})

Вот мои тесты:

def test_menu(client):
    url = reverse('menu')
    response = client.get(url)
    assert response.status_code == 200

@pytest.mark.django_db
def test_cuisine_details_view(client):
    url = reverse('cuisine-details')
    response = client.get(url)
    assert response.status_code == 200

Urls:

path('menu/', MenuView.as_view(), name='menu'),
path('cuisine_details/<int:id>/', CuisineDetailsView.as_view(), name='cuisine-details'),

1-й тест (просмотр меню) работает правильно

2-й тест (просмотр деталей кухни) показывает ошибку

.NoReverseMatch: Reverse for 'cuisine-details' with no arguments not found. 1 pattern(s) tried: ['cuisine_details\\/(?P<id>

Я знаю, что мне, вероятно, следует поместить где-нибудь ID аргумент, но я пробовал несколько вариантов и не преуспел. Буду благодарен за любую помощь/совет

Вы должны передать id в качестве аргумента функции reverse.

@pytest.mark.django_db
def test_cuisine_details_view(client):
    url = reverse('cuisine-details', kwargs={'id': 123})
    response = client.get(url)
    assert response.status_code == 200
Вернуться на верх