2016-04-02 1 views
0

Je suis finalement en train de mettre en place des tests pour mon application Django, mais j'ai des difficultés à démarrer. J'utilise model_mommy pour créer des données dynamiques pour mes tests, mais j'ai le problème suivant:model_mommy - relation de l'utilisateur à l'affectation

La vue que je suis en train de tester est censée me montrer tous les assignments qu'un utilisateur particulier doit remplir. Pour tester cela, je veux créer 500 affectations, connectez-vous à l'application et vérifiez si elles sont affichées. Jusqu'à présent, j'ai les cas de tests suivants:

class TestLogin(TestCase): 


    def setUp(self): 
     self.client = Client() 
     user = User.objects.create(username='sam') 
     user.set_password('samspassword') 
     user.save() 

    def test_login(self): 
     self.client.login(username='sam', password='samspassword') 
     response = self.client.get('/') 
     print (response.content) 
     self.assertEqual(response.status_code, 200) 

et

class TestShowAssignments(TestCase): 

    def setUp(self): 
     user_recipe = Recipe(User, username='sam', password="samspassword") 
     self.assignment = Recipe(Assignment, 
      coders = related(user_recipe)) 
     self.assignments = self.assignment.make(_quantity=500) 

    def test_assignments(self): 
     self.assertIsInstance(self.assignments[0],Assignment) 
     self.assertEqual(len(self.assignments),500) 

Le premier test passe bien et fait ce qu'il doit: TestLogin l'utilisateur se connecte et montre sa page de compte. Le problème commence avec TestShowAssignments, ce qui crée 500 affectations, mais si je regarde les affectations avec print (self.assignments[0].coders), je reçois auth.User.None. Donc, il n'ajoute pas l'utilisateur que j'ai défini comme une relation aux affectations. Ce qui pourrait être important ici est que le champ coders dans le modèle est un champ m2m, que j'ai essayé d'adresser en utilisant related, mais cela ne semble pas fonctionner. Ce qui ne fonctionne pas, c'est de se connecter: si j'utilise le même code que celui utilisé pour la connexion pendant TestLogin dans TestShowAssignments, je ne peux pas me connecter et voir la page utilisateur. Donc, ma question: Comment utiliser model_mommy pour créer des affectations et les ajouter à un utilisateur spécifique, afin que je puisse me connecter en tant qu'utilisateur et voir si les affectations sont affichées correctement?

Répondre

0

Voulez-vous 500 affectations ayant toutes l'utilisateur "sam" comme une seule entrée dans le champ "codeurs"? Si oui, essayez:

from model_mommy import mommy 
... 
class TestShowAssignments(TestCase): 

    def setUp(self): 
     self.user = mommy.make(User, username='sam', password='samspassword') 
     self.assignments = mommy.make(Assigment, coders=[self.user], _quantity=500)