使用 client.get 测试 Wagtail 页面浏览量

Testing Wagtail page views using client.get

我想测试使用 RoutablePageMixin. I've found that Wagtail includes some testing functionality 的 Wagtail 页面的视图功能,但我正在尝试检查不同 url 上的内容。尽管 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')

子页面已经过手动测试,似乎可以正常工作。

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

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

请注意,Page.get_root_nodes()[0] 不会 return 您的站点主页 - 树根是不可编辑的占位符,站点主页通常是它的子项。您 可以 创建根目录的其他子项,但除非您给它们相应的站点记录,否则它们将无法在任何 URL 下访问(这可能就是您在你的测试中得到 404)。