在Django中进行测试时如何在Django中检查重定向

我要编写一个单元测试,而不是检查重定向到的位置。

根据房间中玩家的数量,有2种行为。我要检查此功能:

@login_required
def game_join(request, id):
    game = Game.objects.get(pk=id)
    if game.players_ready == game.max_players:
        return redirect('home',name="full")
    else:
        return redirect('detail', game.id)

测试:

def test_join_empty_room(self):

game = Game.objects.create(name='empty',host='dottore',is_played=False,max_players=4,players_ready=0)
self.join_url_empty = reverse('game_join', args=[game.id])
response = self.client.get(self.join_url_empty, follow=True)
print(response.redirect_chain)

self.assertEquals(response.status_code,200)

测试答案还可以。

重定向链: [('/ player / login?next = / game / 1 / join',302)]

因此它没有任何信息,因为网址格式如下:

path('<int:id>/', detail, name = 'detail'),
path('<int:id>/join', game_join, name = 'game_join'),

所以正确的答案应该是这样的:

http://127.0.0.1:8000/game/64/

如何正确地做到这一点?

评论