簡體   English   中英

Django:如何將用戶與請求工廠關聯

[英]Django: How to associate a user with a request factory

我正在Django網站上為表單編寫一些測試。 我想測試登錄的用戶是否可以使用假定正確輸入的表單。 為此,我正在使用Django請求工廠。 我似乎無法讓測試用戶登錄。 那,或者我什至沒有正確提出請求。 我不確定。 相關代碼如下:

def create_user():
        username = 'User '+id_generator()
        return User.objects.create(username = username, password = 'password')

def test_can_register_deck(self):
        t = create_empty_tourney()
        u = create_user()
        d = create_deck(u)
        rf = RequestFactory()
        request = rf.post(reverse('tourney:tourney', args=(t.slug,)),{'deck' : d})
        request.user = u
        response = self.client.get(reverse('tourney:tourney', args=(t.slug,)), request)
        self.assertEqual(response.status_code, 200)

該請求必須認為用戶已登錄,否則其余測試將無法進行。 這不會引發任何錯誤,但是我什至不確定我的response是否正確利用了請求。 我是否正確地告訴測試“以該用戶身份向Tourney頁面發出發布請求,並嘗試提交卡片組”?

我認為RequestFactory和客戶端是測試Django視圖的兩種不同方式。

rf.post返回的request旨在直接傳遞給視圖函數。 如果您要這樣做,我想您會發現,該用戶將被檢測為已登錄。

我查看了源代碼和文檔,但沒有看到測試客戶端在哪里接受請求。 您可以使用以下方式使用測試客戶端登錄用戶:

self.client.login(
   username=u.username,
   password='password')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM