0

J'écris des cas de test pour mon application Django mais j'utilise un paquet de requêtes en Python pour accéder au code d'état, puis j'utilise l'instruction assert. Ce cas de test est réservé aux utilisateurs EFFECTIFS:Comment obtenir le code d'état en utilisant la bibliothèque de requêtes lors du test dans Django

class StaffClientServerTestCase(TestCase): 

    def test_login_staff(self): 
     User.objects.create_superuser('abc', '[email protected]', '1234') 
     self.client.login(username='abc', password='1234') 
     self.client.get('/dashboard/') 
     s = requests.get('http://localhost:8000/dashboard/') 
     print s.status_code 
     self.assertEqual(200, s.status_code) 

utilisateurs du personnel Seuls ont accès au tableau de bord, donc je créé un objet utilisateur du personnel. La ligne suivante

self.client.login(username='abc', password='1234') devient vraie. self.client.get('/dashboard/') Si j'imprime cette ligne, il affiche le contenu html de la page ce qui signifie que mon personnel peut accéder au dashboard. Mais quand j'utilise le module de demande pour voir le code d'état de dashboard url il montre que status code = 500, et mon test échoue.

s = requests.get('http://localhost:8000/dashboard/') print s.status_code

Quelqu'un pourrait-il me dire où je me trompe ici? Pourquoi mon code d'état sortira-t-il à 500, même si l'utilisateur du personnel peut accéder au tableau de bord et imprimer son contenu en utilisant print self.client.get('/dashboard/'). Aidez-moi!

+1

Vous devez soit spécifier les informations d'authentification pour 'requests.get' ou ne pas utiliser' requests.get' lors de vos tests et tester 'self.client' car vous vous connectez avec la méthode' self.client' et ' requests.get' est une autre chose, donc vous connecter avec 'self.client' ne signifie pas que vous serez authentifié par la suite pour faire autre chose avec une autre bibliothèque (comme' requests' ici). Réfléchissez bien à ce que vous êtes censé tester et tester. De plus, HTTP 500 n'est pas un bon code d'état si vous n'êtes pas authentifié, vous devez donc corriger votre tableau de bord. – dopstar

+0

Une idée de comment obtenir le code de statut? Je dois tester par code d'état. – python

+0

J'ai désactivé ma page d'administration, c'est pourquoi je reçois le code de statut 500. – python

Répondre

1

vous pouvez tester le cas d'une autre manière:

protéger vos vues avec décorateur:

@user_passes_test(lambda u: u.is_staff) 
def dashboard(request, ...): 
    # ... 

puis demander avec requests pour voir si vous êtes banni pour voir la page. Si vous êtes banni (403 interdit), alors vos vues fonctionnent correctement. Pour vérifier si vos vues fonctionnent correctement pour les utilisateurs du personnel, supprimez le décorateur et demandez à nouveau, si vous passez à travers cette fois, alors tout va bien, la seule chose à tester est alors la logique à l'intérieur des vues. Mais pour l'instant, vous obtenez 500 au lieu de 403, ce qui signifie que vous avez des erreurs backend. corrigez-les d'abord

+0

J'ai désactivé ma page d'administration c'est pourquoi je reçois erreur 500. Sinon tout va bien – python