[英]How to make factory use `objects.create_user` instead of `objects.create` when creating model
Is there a way to make instantiating instances from factories use Model.objects.create_user
instead of Model.objects.create
?有没有办法让工厂实例化实例使用
Model.objects.create_user
而不是Model.objects.create
? It seems that user_factory.create
uses the latter, which makes the below code succeed even though username
is a required field and not passed.似乎
user_factory.create
使用后者,这使得下面的代码成功,即使用username
是必填字段并且未通过。
@register
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
@pytest.fixture
def new_user2(user_factory):
return user_factory.create(first_name='abc')
You can override _create method of DjangoModelFactory
您可以覆盖 DjangoModelFactory 的
DjangoModelFactory
方法
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
@classmethod
def _create(cls, model_class, *args, **kwargs):
manager = cls._get_manager(model_class)
return manager.create_user(*args, **kwargs)
You can find the documentation about this method here: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create您可以在此处找到有关此方法的文档: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.