问题描述
大家好,
我正在通过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,{'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/',]
运行测试时,我会返回此错误:
python manage.py测试注册表系统检查未发现任何问题(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'))文件“ /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”, _reverse_with_prefix中的第660行 引发noreverseMatch(msg)django.urls.exceptions.noreverseMatch:找不到“搜索”的反向项。 “搜索”不是有效的视图功能 或图案名称。
================================================ =======================失败: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
================================================ =======================失败:test_homepage_template(tests.RegistryTest) -------------------------------------------------- --------------------追溯(最近一次通话):文件 “ /home/carloc/Projects/100_CogniSpa/gestionale-cogni/src/Registry/tests.py”, 第18行,在test_homepage_template中 self.assertTemplateUsed(response,'registry / search_registry.html')文件 “ /home/carloc/.local/lib/python3.7/site-packages/django/test/testcases.py”, assertTemplateUsed中的第639行 self.fail(msg_prefix +“没有用于呈现响应的模板”)AssertionError:没有用于呈现响应的模板
--------------------------------------------------- -----------------------在0.008秒内进行了3次测试
失败(失败= 2,错误= 1)
我有点迷路了... 该模板位于应用程序中的templates / registry / search_registry.html处,但仍显示没有用于响应的模板。
有帮助吗?
非常感谢您。
卡洛
解决方法
好了。
2个值得指出的问题:
第一:client.get()方法应为:
response = self.client.get('/your/path/')
而不是:
response = self.client.get('your/path/')
第一个斜杠很重要。
第二:在我的情况下,我正在使用“ SimpleTestCase”进行测试,该测试不允许连接到数据库,我的视图需要使用该连接才能正确处理测试。因此,我切换到class RegistryTest(TestCase): .....
通过进行此更正,第三个也是最后一个测试('assertTemplateUsed')也通过了测试。
非常感谢你们的提示。真的有帮助