Всем привет,
Я начинаю свое путешествие через тестовый код django. Начало не очень хорошее.
Я начинаю очень базовое тестирование (очень важное) следующим образом:
from django.test import TestCase, SimpleTestCase
from django.urls import reverse
# Create your tests here.
class RegistryTest(SimpleTestCase):
def test_homepage_status(self):
response = self.client.get('Registry/search/')
self.assertEqual(response.status_code, 200)
def test_homepage_url_name(self):
response = self.client.get(reverse('search'))
self.assertEqual(response.status_code, 200)
def test_homepage_template(self):
response = self.client.get('Registry/search/')
self.assertTemplateUsed(response, 'registry/search_registry.html')
вот мой urls.py:
from django.contrib import admin
from django.urls import include
from django.urls import path
from django.conf.urls import url
from .views import *
app_name = 'registry'
urlpatterns = [
path('search/', search, name='search'),
#customerSupplier
path('customerSupplier/detail/<int:idCS>/', detail_customerSupplier, name='detail_customerSupplier'),
path('customerSupplier/new/', new_customerSupplier, name='new_customerSupplier'),
]
это мой вид поиска из views.py:
def search(request):
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
azienda = form.cleaned_data['Company']
testo = form.cleaned_data['RagSociale']
tipo = form.cleaned_data['Tipologia']
result = CustomerSupplier.search(azienda, testo, tipo)
return render(request, 'registry/search_registry.html', {'form': form, 'CustomerSupplierList':result })
else:
form = SearchForm()
return render(request, 'registry/search_registry.html', {'form': form })
это почтовый urls.py отправителя проекта:
from django.contrib import admin
from django.urls import include
from django.urls import path
from django.conf.urls import url
from .views import *
app_name = 'registry'
urlpatterns = [
path('search/', search, name='search'),
#customerSupplier
path('customerSupplier/detail/<int:idCS>/', detail_customerSupplier, name='detail_customerSupplier'),
path('customerSupplier/new/', new_customerSupplier, name='new_customerSupplier'),
]
когда я запускаю тест, я возвращаю эту ошибку:
python manage.py test Проверка системы реестра не выявила проблем (0 отключено). FFE ================================================= ===================== ОШИБКА: test_homepage_url_name (tests.RegistryTest) --------------------- ------------------------------------------------- Выслеживать (последний вызов последний): файл /home/carloc/Projects/100_CogniSpa/gestionale-cogni/src/Registry/tests.py, строка 13, в test_homepage_url_name response = self.client.get (reverse ('search')) File /home/carloc/.local/lib/python3.7/site-packages/django/urls/base.py, строка 90, обратный возврат iri_to_uri (resolver._reverse_with_prefix (view, prefix, * args, ** kwargs)) Файл /home/carloc/.local/lib/python3.7/site-packages/django/urls/resolvers.py, строка 660, в _reverse_with_prefix поднять NoReverseMatch (msg) django.urls.exceptions.NoReverseMatch: Обратный поиск для поиска не найден. "поиск" не является допустимой функцией просмотра или именем шаблона.
================================================== ==================== FAIL: test_homepage_status (tests.RegistryTest) ---------------------- ------------------------------------------------ Выслеживать ( последний вызов последним): файл /home/carloc/Projects/100_CogniSpa/gestionale-cogni/src/Registry/tests.py, строка 10, в test_homepage_status self.assertEqual (response.status_code, 200) AssertionError: 404! = 200
================================================== ==================== FAIL: test_homepage_template (tests.RegistryTest) ---------------------- ------------------------------------------------ Выслеживать ( последний вызов последним): файл /home/carloc/Projects/100_CogniSpa/gestionale-cogni/src/Registry/tests.py, строка 18, в test_homepage_template self.assertTemplateUsed (ответ, 'registry / search_registry.html') Файл / главная /carloc/.local/lib/python3.7/site-packages/django/test/testcases.py, строка 639, в assertTemplateUsed self.fail (msg_prefix + Нет шаблонов, используемых для отображения ответа) AssertionError: шаблоны для отображения не используются ответ
-------------------------------------------------- -------------------- Выполнено 3 теста за 0,008 с.
ВЫПОЛНЕНО (отказов = 2, ошибок = 1)
Я как бы заблудился ... шаблон находится в приложении по адресу templates / registry / search_registry.html, но по-прежнему говорит, что для ответа не использовался шаблон.
Любая помощь?
большое спасибо.
Карло
urls.py
проекта, где вы используетеinclude()
. Обратите внимание, чтоtest_homepage_status
не работает, потому что он возвращает 404 вместо 200. Сначала исправьте это, прежде чем беспокоиться о тесте шаблона. - person Alasdair   schedule 29.09.2020return render(...)
за пределы блокаelse
- на данный момент представление поиска не возвращает ответ на почтовый запрос, если форма недействительна. - person Alasdair   schedule 29.09.2020from django.contrib import admin from django.urls import include from django.urls import path from django.conf.urls import url from Registry.views import default urlpatterns = [ path('admin/', admin.site.urls), path('Registry/', include('Registry.urls', namespace='registry')), # path('', default), ]
Извините, если он не идеально отформатирован - person Carlo Cogni   schedule 29.09.2020path('Registry/', include('Registry.urls', namespace='registry')),
- person Carlo Cogni   schedule 29.09.2020self.client.get('/Registry/search/')
, или вы можете использоватьreverse('registry:search')
, как предложил Араккал. - person Alasdair   schedule 29.09.2020form = SearchForm()
должен по-прежнему находиться в блоке else, поэтому не комментируйте его. Переместите возврат за пределы блока else. - person Alasdair   schedule 29.09.2020