Django assertTemplateUsed使用RequestFactory()以静默方式失败
我正在开发Django 1.7.1应用程序,其中有一个名为books的简单应用程序。在为各种视图创建集成测试时,我创建了测试来检查每个视图的模板和响应代码。因为有些视图是@login_必需的,所以我将它们划分为一个新的测试类。问题是线路:Django assertTemplateUsed使用RequestFactory()以静默方式失败,django,integration-testing,Django,Integration Testing,我正在开发Django 1.7.1应用程序,其中有一个名为books的简单应用程序。在为各种视图创建集成测试时,我创建了测试来检查每个视图的模板和响应代码。因为有些视图是@login_必需的,所以我将它们划分为一个新的测试类。问题是线路: self.assertTemplateUsed(response, 'browse.html') 他在默默地失败。我已经运行了该测试的几个变体,例如: self.assertTemplateUsed(response, 'index.html') sel
self.assertTemplateUsed(response, 'browse.html')
他在默默地失败。我已经运行了该测试的几个变体,例如:
self.assertTemplateUsed(response, 'index.html')
self.assertTemplateUsed(response, 'brow---se.html')
他们都通过了!即使这些不是此测试的准确模板
# integration_tests.py
from django.contrib.auth.models import User
from django.test import TestCase, RequestFactory
from ..views import browse
class BookAppUserIntegrationTests(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = User.objects.create_user(username='user',
email='user@example.com',
password='password')
def test_browse_normal(self):
"""
Tests the browse page for normal user
"""
request = self.factory.get('/url-is-unimportant')
request.user = self.user
response = browse(request)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'browse.html')
# views.py
@login_required(login_url='error')
def browse(request):
detail_list = Detail.objects.all()
context = {'detail_list': detail_list}
return render(request, 'book_app/browse.html', context)
欢迎提出任何建议 您需要使用
assertTemplateUsed
作为一个函数,并对响应调用render()
。试试这个(请注意,您不再需要将响应作为第一个参数):
def test_browse_normal(self):
"""
Tests the browse page for normal user
"""
request = self.factory.get('/url-is-unimportant')
request.user = self.user
response = browse(request)
self.assertEqual(response.status_code, 200)
with self.assertTemplateUsed('browse.html'):
response.render()