我很新的Django和測試....Django的測試客戶端得到回報404,而不是200
我測試我的應用程序,每一次我做threads_page = self.client.get('/threads/1/')
返回404個狀態,而不是200(該網址的作品,1是主題ID)。
我發現一個線程有同樣的問題,並有問題的答覆(Django test client get returns 404 however works in shell),但我仍然不知道如何解決它。 的問題是,在我的意見我有一個參數一個get_object_or_404,但我不知道如何傳遞參數的測試:
views.py
def threads(request, subject_id):
subject = get_object_or_404(Subject, pk=subject_id)
return render(request, 'forum/threads.html', {'subject': subject})
這是我的測試,現在
def test_check_threads_content_is_correct(self):
threads_page = self.client.get('/threads/1/')
self.assertEqual(threads_page.status_code, 200)
謝謝!
*這是我在Github上的代碼的情況下,它可以幫助 https://github.com/IreneG5/we_are_social_forum
使用'reverse()'函數,在你的應用程序的urls.py'和'namespace'中爲你的項目urls.py中的url添加'name'。然後'url = reverse(':')'.. –
zaidfazil
我試過了,但現在我收到了更多的錯誤......請問您可以發佈完整的代碼行嗎? 而不是'threads_page = self.client.get('/ threads/1 /')'你建議'threads_page = reverse('threads:threads') 而在threads/urls.py中'url(r'^ threads /(?P \ d +)/ $',forum_views.threads,name ='threads')' 而在myproject/urls.py'url(r'^ threads /(?P \ d +)/ $' forum_views.threads,include('threads /(?P \ d +)/ $。urls',namespace ='threads'))'。 我沒有在我的應用程序(線程)url.py之前,一切都在項目下urls.py –
Ire