我是新来的工厂男孩与Django。花了一段时间之后,我了解了如何为用户模型创建工厂。在
我使用默认的用户模型,下面是我的工厂。我用的是假的随机性
import factory
from . import models
from django.contrib.auth.models import User
from faker import Faker
from django.contrib.auth.hashers import make_password
fake = Faker()
class UserFactory(factory.DjangoModelFactory):
class Meta:
model = User
django_get_or_create = ('email',)
first_name = fake.first_name()
last_name = fake.last_name()
email = first_name+"."+last_name+"@gmail.com"
password = make_password("ojasojas")
username = first_name+"_"+last_name
现在在django shell中
我使用用户工厂.create()用板条箱封住用户。这个很好用。有没有可能循环使用create语句并装箱5个不同的用户?现在,当我这样做时,我只得到一个用户(装箱一次,得到4次)如下。我错过了什么?
您正在为您的工厂定义类属性,只有在定义类时才会计算这些属性。
email = first_name+"."+last_name+"@gmail.com"
将计算一次,而不是每次调用UserFactory.create()
,因此会出现唯一的约束错误。通常的解决方案是通过__init__()
来定义实例属性,但是FactoryBoy对此有自己的解决方案:lazy attributes。在相关问题 更多 >
编程相关推荐