Как я могу проверить 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)