2017-09-28 3 views
0

J'utilise usine garçon pour le test de mon utilisateur (client). J'ai créé la classe UserFactoryCustomer pour mon utilisateur client.la boucle ne pas itérer sur la classe garçon usine

# factories.py 
class UserFactoryCustomer(factory.django.DjangoModelFactory): 

    class Meta: 
     model = User 
     django_get_or_create = ('first_name', 'last_name', 'username', 'email', 'user_type', 'balance') 

    first_name = 'Ahmed' 
    last_name = 'Asadov' 
    username = factory.LazyAttribute(lambda o: slugify(o.first_name + '.' + o.last_name)) 
    email = factory.LazyAttribute(lambda a: '{0}.{1}@example.com'.format(a.first_name, a.last_name).lower()) 
    user_type = 1 
    balance = 10000.00 

# test_serializers.py 
class ApiSerilizerTestCase(TestCase): 
    def test_get_status_code_200(self): 
     customers = factories.UserFactoryExecutor.objects.all() 
     for customer in customers: 
      self.assertEqual(customer.get('username').status_code, 200) 

Je reçois cette erreur

Creating test database for alias 'default'... 
System check identified no issues (0 silenced). 
..E 
====================================================================== 
ERROR: test_get_status_code_200 (tests.test_serializers.ApiSerilizerTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/heartprogrammer/Desktop/freelance-with-api/freelance/tests/test_serializers.py", line 20, in test_get_status_code_200 
    customers = factories.UserFactoryExecutor.objects.all() 
AttributeError: type object 'UserFactoryExecutor' has no attribute 'objects' 

---------------------------------------------------------------------- 
Ran 3 tests in 0.246s 

FAILED (errors=1) 

Je veux apporter tous mes clients qui sont dans la classe et UserFactoryCustomer pour les tester

Répondre

0

Lors de l'exécution d'un TestCase dans django, la base de données utilisé est une base de données temporaire différente de celle utilisée en production. Cela signifie que vous ne pouvez pas interroger toutes les instances d'utilisateur de votre base de données.

UserFactoryCustomer n'a pas d'attribut objects car il ne s'agit pas d'une classe de modèle django. Au lieu de cela, vous pouvez l'utiliser pour créer des instances de modèle utilisateur dans la base de données de test, et obtenir les utiliser User.objects.all()

Pour créer de tels cas voir le documentation