Джанго URL-тестирование - PullRequest
0 голосов
/ 24 сентября 2018

urls.py моего веб-приложения выглядит следующим образом

urlpatterns = [
    path('u/<int:unit_id>/', views.unit_view, name='unit_view'),
    path('u/<int:unit_id>/edit/', views.unit_edit, name='unit_edit'),
]

Я попытался написать тест следующим образом.Невозможно запустить тесты.Даже не получаю ошибок

from django.urls import reverse, resolve


class TestUrls:

    def test_unit_view_url(self):
        path = reverse('unit_view', kwargs={'unit_id': 1})
        assert resolve(path).views.unit_view == 'unit_view'

    def test_unit_edit_url(self):
        path = reverse('unit_edit', kwargs={'unit_id': 1})
        assert resolve(path).views.unit_edit == 'unit_edit'

1 Ответ

0 голосов
/ 24 сентября 2018

Вы не создали подкласс от TestCase, поэтому для Django это просто обычный класс.

<b>from django.test import TestCase</b>
from django.urls import reverse, resolve

class TestUrls<b>(TestCase)</b>:

    def test_unit_view_url(self):
        path = reverse('unit_view', kwargs={'unit_id': 1})
        self.assertEqual('unit_view', resolve(path).views.unit_view)

    def test_unit_edit_url(self):
        path = reverse('unit_edit', kwargs={'unit_id': 1})
        self.assertEqual('unit_edit', resolve(path).views.unit_view)

Обычно утверждения также пишутся с assertEqual(..) [Python-doc] и друзья, так как это даст полезные сообщения, такие как:

AssertionError: 'foobar' != 'foobor'
- foobar
?     ^
+ foobor
?     ^

Итак, тестирование выведет два значения и - в зависимости от типов и утверждения- может даже дать более полное представление о том, что происходит не так.

Для получения дополнительной информации см. документацию Django по Написание и запуск тестов .

...