代码之家  ›  专栏  ›  技术社区  ›  Breno Teixeira

如何测试为CBV ListView生成的上下文中是否存在“object_list”

  •  0
  • Breno Teixeira  · 技术社区  · 11 年前

    我想写一个测试,测试是否有 object_list 在基于类的视图传递的上下文中 ListView .

    目前我有代码:

    视图.py

        class BlogView(ListView):
            model = Post
            template_name = 'core/blog.html'
    

    型号.py:

        class Post(models.Model):
            title = models.CharField(max_length=500)
            content = models.TextField()
    

    测试.py

        class BlogListViewTests(TestCase):
    
            def setUp(self):
                self.resp = self.client.get('/blog/')
    
            def test_has_a_post_list(self):
                self.assertContains(u'post_list', self.resp.context)
    

    运行测试时出现以下错误:

        Traceback (most recent call last):
          File "/home/breno/projects/blog/core/tests.py", line 36, in test_has_a_post_list
              self.assertContains(self.resp.context, 'post_list')
          File "/home/breno/.virtualenvs/blog/local/lib/python2.7/site-packages/django/test/testcases.py", line 325, in assertContains
              self.assertEqual(response.status_code, status_code,
         AttributeError: 'ContextList' object has no attribute 'status_code'
    

    正在打印 self.resp.context 我看到一个带钥匙的桶 u'post_list' 内部:

    [[{'False': False, 'None': None, 'True': True}, {u'paginator': None, u'post_list': [], u'object_list': [],...,]]

    我的测试出了什么问题?我怎样才能做这个测试?泰

    1 回复  |  直到 11 年前
        1
  •  3
  •   allisson    11 年前
    class BlogListViewTests(TestCase):
    
        def setUp(self):
            self.resp = self.client.get('/blog/')
    
        def test_has_a_post_list(self):
            self.assertTrue('post_list' in self.resp.context)