Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django assertTemplateUsed使用RequestFactory()以静默方式失败_Django_Integration Testing - Fatal编程技术网

Django assertTemplateUsed使用RequestFactory()以静默方式失败

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

我正在开发Django 1.7.1应用程序,其中有一个名为books的简单应用程序。在为各种视图创建集成测试时,我创建了测试来检查每个视图的模板和响应代码。因为有些视图是@login_必需的,所以我将它们划分为一个新的测试类。问题是线路:

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()