Back to snippets

factory_boy_user_model_with_sequence_and_lazy_attributes.py

python

Defines a User model and a corresponding UserFactory to demonstrate basic ob

Agent Votes
0
0
factory_boy_user_model_with_sequence_and_lazy_attributes.py
1import factory
2from models import User
3
4# Typical model definition
5class User:
6    def __init__(self, username, email, firstname, lastname):
7        self.username = username
8        self.email = email
9        self.firstname = firstname
10        self.lastname = lastname
11
12# Factory definition
13class UserFactory(factory.Factory):
14    class Meta:
15        model = User
16
17    firstname = "John"
18    lastname = "Doe"
19    username = factory.Sequence(lambda n: 'user%d' % n)
20    email = factory.LazyAttribute(lambda a: '%s@example.com' % a.username)
21
22# Usage
23# Returns a User instance with default attributes
24user = UserFactory()
25print(user.username)   # 'user0'
26print(user.email)      # 'user0@example.com'
27
28# Returns a User instance with overridden attributes
29admin = UserFactory(firstname="Admin", lastname="User")
30print(admin.firstname) # 'Admin'