database.factories.Factory
- class database.factories.Factory(model_name: str, records: int = 1)
Bases:
object
Class for managing factories based on database models.
Create and save instances of database models or dicts based on database models registered in the application.
- make(self, params: dict = None, to_dict: bool = False, exclude: list = None)
Create instances of database models with fake data.
- save(self, params: dict = None)
Save instances of database models in the database.
Examples
How to create a fake user without save in database from command line:
source venv/bin/activate flask shell >>> user_factory = Factory('User') >>> user = user_factory.make() # An instance of database model <User: None> >>> user.__data__ # You can see user data on this way
Oh, Wait!
>>> from pprint import pprint >>> pprint(user.__data__) # Even better!
You can save the user in the database.
>>> user.save() 1
Factory can create a dictionary instead of an instance of database model.
>>> user = user_factory.make(to_dict=True) >>> pprint(user)
Also can set params too.
>>> user_factory = Factory('User') >>> user = user_factory.make({'name': 'Ruben', 'last_name': 'Rodriguez'}) >>> user.name 'Ruben' >>> user.last_name 'Rodriguez'
Factory allow to make many users in once time.
>>> user_factory = Factory('User', 3) >>> users = user_factory.make() [<User: None>, <User: None>, <User: None>]
If you want to fill some params later then you can pass a fieldnames list to the factory of thats fields that you don’t want to fill yet.
>>> user_factory = Factory('User') >>> user = user_factory.make(exclude=['name', 'birth_date']) >>> user.name None >>> user.birth_date None
If you only need to save data you can do it.
>>> Factory('User', 3).save() [<User: 1>, <User: 2>, <User: 3>]
And you can set params for all users.
>>> Factory('User', 3).save({'name': 'Ruben'}) [<User: 4>, <User: 5>, <User: 6>]
Methods
Factory.__init__
(model_name[, records])Register as many factories as given records.
Factory.make
([params, to_dict, exclude])Create instances of database model with fake data.
Factory.save
([params])Save instances of database model in the database.