Django specific Extensions for Factory Boy
pip install factory-man==1.2.3
FactoryMan provides Django specific extensions for Factory Boy.
pip install factory-man
FactoryMan provides you with a factory function create_populated_modelfactory
, which accepts the model class and automatically creates a factory class based on the model's fields. If you want to override some fields, you can pass them as keyword arguments to the __init__
method.
from factoryman import create_populated_modelfactory
from .models import Project
ProjectFactory = create_populated_modelfactory(Project)
ExpiredProjectFactory = create_populated_modelfactory(Project, deadline='1999-04-04')
To override the factory's _create
method, use create_override
keyword argument. This is useful to create many-to-many connections as described in the Factory Boy documentation.
Check out this article for a more detailed user guide.
ModelFieldSequence
extends factory.Sequence
to provide a little more DRY syntax. It accepts a Django model class as parameter and uses the class name togeteher with the field name to which it is bound to for creating an unique value.
Alternatively, it can accept a string
parameter, which will be used directly instead of a name derived from the class and field.
Example:
from factory.django import DjangoModelFactory as ModelFactory
from factoryman import ModelFieldSequence
class CharityFactory(ModelFactory):
class Meta:
model = Charity
name = ModelFieldSequence(Charity) # Will be `Charity__name-n`, where n is the object count
email = ModelFieldSequence(string='hello@charity.ee') # Will be `hello@charity.ee-n`, where n is the object count