Getting Started¶
Polyfactory is a simple and powerful mock data generation library, based around type
hints and supporting dataclasses, TypedDicts
,
Pydantic models, msgspec Struct's
and more.
Installation¶
pip install polyfactory
Example¶
from dataclasses import dataclass
from polyfactory.factories import DataclassFactory
@dataclass
class Person:
name: str
age: float
height: float
weight: float
class PersonFactory(DataclassFactory[Person]):
__model__ = Person
def test_is_person() -> None:
person_instance = PersonFactory.build()
assert isinstance(person_instance, Person)
assert isinstance(person_instance.name, str)
assert isinstance(person_instance.age, float)
assert isinstance(person_instance.height, float)
assert isinstance(person_instance.weight, float)
That is it - with almost no work, we are able to create a mock data object fitting the Person
class model definition.
This is possible because of the typing information available on the dataclass, which are used as a source of truth for data generation.
The factory parses the information stored in the dataclass and generates a dictionary of kwargs that are passed to
the Person
class constructor.
Relation to pydantic-factories
¶
Prior to version 2, this library was known as pydantic-factories, a name under which it gained quite a bit of popularity.
A main motivator for the 2.0 release was that we wanted to support more than just Pydantic models, something which also
required a change to its core architecture. As this library would no longer be directly tied to Pydantic, polyfactory
was chosen as its new name to reflect its capabilities; It can generate mock data for
dataclasses, TypedDicts
,
Pydantic, Odmantic,
and Beanie ODM models, as well as custom factories.