покрытие django не охватывает URL-адреса, несмотря на написание специальных тестов для URL-адресов

#python #django #coverage.py

Вопрос:

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

 from django.urls import path, include
from . import views

urlpatterns = [
    path('test/', views.test, name='test'),
    path('', views.dashboard, name='dashboard'),
    path('dashboard/', views.dashboard, name='dashboard'),
    path('add_new_client/', views.add_new_client, name='add_new_client'),
    path('edit_client/<int:client_id>', views.edit_client, name='edit_client'),
    .....some more paths....
    ]
 

мой test_urls.py файл для этого urls.py файл выглядит следующим образом

 from django.test import SimpleTestCase
from django.urls import reverse, resolve
from backoffice_engine.views import *

class TestBackofficeEngineUrls(SimpleTestCase):

    def test_test_url(self):
        url = reverse('test')
        self.assertEquals(resolve(url).func, test)

    def test_blank_url_uses_dashboard_function(self):
        url = reverse('dashboard')
        self.assertEquals(resolve(url).func, dashboard)

    def test_add_new_client(self):
        url = reverse('add_new_client')
        self.assertEquals(resolve(url).func, add_new_client)

    def test_client_detail(self):
        url = reverse('client_detail', args=['1'])
        self.assertEquals(resolve(url).func, client_detail)
 

насколько я понимаю, запуск покрытия для этого файла должен привести к отчету о покрытии, показывающему, что следующие URL-адреса были охвачены модульными тестами.

однако отчет о покрытии для backoffice_engine.urls.py по умолчанию отсутствует ноль. в отчете проверяется только первые 3 строки urls.py файл

изображение отчета о покрытии

Комментарии:

1. Там действительно сказано, что покрытие составляет 100%. Может быть, он просто обрабатывал URL-шаблоны и все остальное как одну строку?

Ответ №1:

Покрытие не может сказать вам, какие шаблоны URL были использованы. Строка 4-это начало одной длинной многострочной инструкции, которая присваивает все шаблоны URL-адресов. Он запускается только один раз, когда urls.py импортируется.

Например, строка 7 не выполняется при посещении URL-адреса «панель мониторинга/». Он выполняется при запуске программы, чтобы добавить шаблон для «панели мониторинга/» в список всех шаблонов.