Как я могу проверить URL-адреса для моих представлений на основе классов в Django?

Я пытаюсь протестировать разрешения URL для моего первого проекта Django - я успешно протестировал представления на основе функций, однако у меня возникли проблемы с тестированием представлений на основе классов.

При запуске теста на CBV я получаю следующую ошибку:

AssertionError: <function UpdateHealth at 0x7f538f023e50> != <HealthHub.views.UpdateHealth object at 0x7f538d7aec10>

Tests.py (рассматриваемый тест CBV):

   def test_health_hub_update_url_is_resolved(self):
        url = reverse('HealthHub:health_hub_update')
        self.assertEqual(resolve(url).func, views.UpdateHealth())

views.py (вид, о котором идет речь):

class UpdateHealth(View):
    '''View for the Update Health page.

    Uses StatUpdateForm to allow the user to update their stats.'''

    def get(self, request, *args, **kwargs):

        stats = HealthStats
        update_form = StatUpdateForm
             
        context = {
            'stats': stats,
            'update_form': update_form,
            'user': stats.user,
            'weight': stats.weight,
            'date': stats.date,
        }
        return render(request, 'health_hub_update.html', context)
    
    def post(self, request, *args, **kwargs):

        update_form = StatUpdateForm(data=request.POST)

        if update_form.is_valid():
            obj = update_form.save(commit=False)
            obj.user = request.user
            obj.save()
            
        return redirect("HealthHub:health_hub")

Urls.py:

path('MyHealth/update', views.UpdateHealth.as_view(), name='health_hub_update'),

Любая помощь будет очень признательна, так как я, похоже, зашел в тупик.

Проверить можно с помощью атрибута .view_class, присоединенного к функции:

def test_health_hub_update_url_is_resolved(self):
    url = reverse('HealthHub:health_hub_update')
    self.assertEqual(resolve(url).func.view_class, views.UpdateHealth)
Вернуться на верх