使用client.get测试Wagtail页面视图

时间:2017-03-07 13:35:07

标签: django unit-testing testing wagtail

我想测试使用RoutablePageMixin的Wagtail页面的视图功能。我发现Wagtail包含了一些testing functionality,但我试图查看不同网址上的内容。尽管Wagtail测试功能起作用,但使用self.client.get进行测试并不起作用 - 我得到了404响应。我正在尝试以下测试:

def test_subpage(self):
    response = self.client.get(
        self.page.full_url + self.page.reverse_subpage('subpage')
    )
    self.assertEqual(response.status_code, 200,
                     'Request the open positions page')

我认为错误在于页面的创建方式。我已经使用了几种方法,但找不到一种方法。我发现创建页面的最直观方式如下:

def setUp(self):
    self.login()
    parent = Page.get_root_nodes()[0] # Home

    self.assertCanCreate(parent, MyPage, {
        'title': 'Title!',
        'title_sv': 'Title2!',
        'slug': 'test',
        'published': datetime.datetime.now(),
    })

    self.page = MyPage.objects.get(slug='apply')

子页面已经过手动测试,似乎确实有效。

1 个答案:

答案 0 :(得分:1)

在测试代码(或任何其他代码......)中创建页面的最简单方法是:

parent = Page.objects.get(url_path='/home/')
page = MyPage(title='Title!', slug='test', body='...')
parent.add_child(instance=page)

请注意,Page.get_root_nodes()[0]不会返回您的网站首页 - 树根是不可编辑的占位符,网站主页通常是其中的子主页。您可以创建root的其他子级,但除非您为他们提供相应的站点记录,否则将无法在任何URL下访问它们(这可能是您在测试中获得404的原因)