#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-адреса «панель мониторинга/». Он выполняется при запуске программы, чтобы добавить шаблон для «панели мониторинга/» в список всех шаблонов.