[英]In Django tests, why do I need to use <Model>.objects.get() instead of what was returned by <Model>.objects.create()?
[英]How to make factory use `objects.create_user` instead of `objects.create` when creating model
有没有办法让工厂实例化实例使用Model.objects.create_user
而不是Model.objects.create
? 似乎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')
您可以覆盖 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)
您可以在此处找到有关此方法的文档: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.