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.