2017-03-07 45 views
0

我想爲使用RoutablePageMixin的W Page頁測試我的瀏覽功能。我發現W includes包括一些testing functionality,但我試圖檢查在不同的URL上的內容。雖然W test測試功能正常,但使用self.client.get進行測試不起作用 - 我收到了404響應。我正在嘗試以下測試:使用client.get測試W page瀏覽量

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

創建測試代碼中的頁面的最簡單方法(或任何其他代碼...)是:

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

注意Page.get_root_nodes()[0]不會回到你的網站的主頁 - 樹根是一個不可編輯佔位符和網站主頁通常是它的孩子。你可以可以創建根的其他孩子,但除非你給他們一個相應的網站記錄,他們將無法訪問任何網址(這可能是爲什麼你在你的測試中得到404)。

+0

謝謝!這解決了我的問題! – Dekker