2015-09-23 2 views
0

Je suis en train de tester révoquer la fonction dans la vue:test de Django DoesNotExist

@login_required 
def revoke(request, id): 
    """ 
    Delete access token 
    """ 
    obj = Hiren.objects.get(pk=id) 
    obj.delete() 
    return redirect('/hiren') 

Voici mon code de test qui renvoie une erreur:

class TestRevokeView(TestCase): 

    def setUp(self): 
     User.objects.create_superuser(
      username='admin', password='admin', email='[email protected]') 
     item = Hiren() 
     item.access_token = "bla bla" 
     item.authorized = True 
     item.save() 

    def test_logged_in_user_can_delete_object(self): 
     self.client.login(username='admin', password='admin') 
     count = Hiren.objects.all().count() 
     self.assertEqual(count, 1) 
     response = self.client.get('/revoke/1/', follow=True) 
     self.assertRedirects(response, '/hiren/') 

Voici le code d'erreur:

Traceback (most recent call last): 
    File ".....tests.py", line 109, in test_logged_in_user_can_delete_object 
    response = self.client.get('/revoke/1/', follow=True) 
.................... 
    self.model._meta.object_name 
github.models.DoesNotExist: Hiren matching query does not exist. 

Alors ma question est ce qui me manque ici.

Répondre

3

Vous devez être sûr que Hiren exemple que vous avez créé sur la méthode setUp, a ID égal à 1

Pour éviter cela, définissez Hiren instance id une variable de classe, puis l'utiliser sur votre méthode d'essai.

class TestRevokeView(TestCase): 

    def setUp(self): 
     User.objects.create_superuser(
      username='admin', password='admin', email='[email protected]') 
     item = Hiren() 
     item.access_token = "bla bla" 
     item.authorized = True 
     item.save() 
     self.HIREN_ID = item.id 

    def test_logged_in_user_can_delete_object(self): 
     self.client.login(username='admin', password='admin') 
     count = Hiren.objects.all().count() 
     self.assertEqual(count, 1) 
     response = self.client.get('/revoke/%s/' % self.HIREN_ID), follow=True) 
     self.assertRedirects(response, '/hiren/') 
2

probabily, le pk de Hiren article est 1.

class TestRevokeView(TestCase): 

    def setUp(self): 
     User.objects.create_superuser(
      username='admin', password='admin', email='[email protected]') 
     self.item = Hiren() 
     self.item.access_token = "bla bla" 
     self.item.authorized = True 
     self.item.save() 

    def test_logged_in_user_can_delete_object(self): 
     self.client.login(username='admin', password='admin') 
     count = Hiren.objects.all().count() 
     self.assertEqual(count, 1) 
     response = self.client.get('/revoke/{0}/'.format(self.item.pk), follow=True) 
     self.assertRedirects(response, '/hiren/')