On , I learnt ...
About Factory Boy’s SelfAttribute
class
Factory Boy has a useful SelfAttribute
class that lets a field
reference another field of the object being constructed.
It’s particularly useful when used in a SubFactory
as it lets you reference
fields on the parent object. E.g.
import factory
from django.utils import timezone
class Message(factory.Factory):
sent_at = factory.LazyFunction(timezone.now)
class Event(factory.Factory):
occurred_at = factory.LazyFunction(timezone.now)
message = factory.SubFactory(
Message,
# Ensure the sent_at of the linked message matches the occurred_at field
# of the event.
sent_at=factory.SelfAttribute("..occurred_at")
)
event = Event()
assert event.occurred_at == event.message.sent_at # True