循环不会在工厂男孩类上迭代

时间:2017-09-28 06:27:35

标签: python django testing factory-boy

我正在使用工厂男孩来测试我的用户(客户)。我为我的客户User创建了类UserFactoryCustomer。

# 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)

我犯了这个错误

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)

我想带来我在课堂上的所有客户和UserFactoryCustomer来测试它们

1 个答案:

答案 0 :(得分:0)

在django中运行TestCase时,使用的数据库是一个与生产中使用的数据库不同的临时数据库。 这意味着您无法查询数据库中的所有用户实例。

UserFactoryCustomer没有objects属性,因为它不是django模型类。相反,您可以使用它在测试数据库中创建User模型的实例,并使用User.objects.all()

获取它们

要创建此类实例,请参阅documentation