我試圖在change_list
視圖中爲管理員操作編寫測試。我提到this question,但無法讓測試正常工作。這裏是我的代碼和問題:測試Django管理操作(重定向/授權問題)
class StatusChangeTestCase(TestCase):
"""
Test case for batch changing 'status' to 'Show' or 'Hide'
"""
def setUp(self):
self.categories = factories.CategoryFactory.create_batch(5)
def test_status_hide(self):
"""
Test changing all Category instances to 'Hide'
"""
# Set Queryset to be hidden
to_be_hidden = models.Category.objects.values_list('pk', flat=True)
# Set POST data to be passed to changelist url
data = {
'action': 'change_to_hide',
'_selected_action': to_be_hidden
}
# Set change_url
change_url = self.reverse('admin:product_category_changelist')
# POST data to change_url
response = self.post(change_url, data, follow=True)
self.assertEqual(
models.Category.objects.filter(status='show').count(), 0
)
def tearDown(self):
models.Category.objects.all().delete()
我試着用print
,看看有什麼反應是,這是我得到了什麼:
<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/admin/login/?next=/admin/product/category/">
看起來這需要我的登錄憑據 - 我試圖創建一個用戶在setUp()
並按照Django文檔登錄測試,但它似乎沒有工作。
任何幫助,將不勝感激!
是的,您需要創建一個用戶然後登錄測試客戶端。請顯示你的嘗試和發生了什麼。 – Alasdair
@阿拉斯代爾謝謝!我重新嘗試了它(在進入睡眠狀態之後),並意識到我沒有實例化django的'Client'類,因此登錄並沒有在我的後續請求中持續存在。感謝您指點我的方向:) –