Loading...
Loading...
Auto-activate for polyfactory, ModelFactory, DataclassFactory, MsgspecFactory, AttrsFactory, Use, register_fixture, pytest plugin, __random_seed__, or coverage(). Not for production seeding.
npx skill4agent add litestar-org/litestar-skills polyfactoryModelFactory[T]DataclassFactoryMsgspecFactoryAttrsFactoryTypedDictFactory.build()Tmsgspec.MetaFieldTestClient.post(...)AsyncTestClient.put(...)litestar:litestar-testingT | NoneOptional[T]from __future__ import annotationsMeta__model____random_seed____set_as_default_factory_for_type__.build()ModelFactoryDataclassFactoryMsgspecFactoryAttrsFactoryTypedDictFactoryregister_fixture@pytest.fixture| Model kind | Factory base | Import |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| Beanie / Odmantic / SQLA | dedicated bases | see factories.md |
from dataclasses import dataclass
from polyfactory.factories import DataclassFactory
@dataclass
class Order:
id: int
customer_email: str
total_cents: int
status: str
class OrderFactory(DataclassFactory[Order]):
__model__ = Order
# Use it
one = OrderFactory.build()
many = OrderFactory.batch(10)build()batch(n)list[T]ncoverage()from polyfactory import Use
from polyfactory.factories import DataclassFactory
class OrderFactory(DataclassFactory[Order]):
__model__ = Order
# Plain literal — every build returns this exact value
status = "pending"
# Callable — re-evaluated per build
customer_email = Use(lambda: "test@example.com")
# Random choice — re-evaluated per build
total_cents = Use(DataclassFactory.__random__.randint, 100, 10_000)Use(callable, *args, **kwargs)build()class OrderFactory(DataclassFactory[Order]):
__model__ = Order
__random_seed__ = 42 # same seed → same output across runs__random_seed____faker__ = Faker(seed=...)class CustomerFactory(DataclassFactory[Customer]):
__model__ = Customer
__set_as_default_factory_for_type__ = True
@dataclass
class Order:
id: int
customer: Customer # automatically populated by CustomerFactory.build()
class OrderFactory(DataclassFactory[Order]):
__model__ = Order__set_as_default_factory_for_type__ = Trueimport pytest
from polyfactory.pytest_plugin import register_fixture
from polyfactory.factories import DataclassFactory
@register_fixture
class OrderFactory(DataclassFactory[Order]):
__model__ = Order
def test_order_total(order_factory: OrderFactory) -> None:
order = order_factory.build()
assert order.total_cents >= 0@register_fixtureOrderFactoryimport pytest
from polyfactory import Use
from polyfactory.pytest_plugin import register_fixture
@register_fixture
class CustomerFactory(DataclassFactory[Customer]):
__model__ = Customer
__set_as_default_factory_for_type__ = True
@register_fixture
class OrderFactory(DataclassFactory[Order]):
__model__ = Order
customer = Use(CustomerFactory.build) # explicit local override__set_as_default_factory_for_type__ = TrueCustomerCustomerFactoryUse(CustomerFactory.build)__model__tests/factories.pytests/<feature>/factories.pyUse(...)@register_fixtureFactory.build()__set_as_default_factory_for_type__ = TrueUse(OtherFactory.build)__random_seed__total >= 0__model____model__.build()status = "pending"__random_seed____faker__ModelFactorymsgspec.StructMetaMsgspecFactorytests/coverage()pytest.mark.parametrizefrom __future__ import annotationsModelFactoryDataclassFactoryMsgspecFactoryAttrsFactory__model__tests/__random_seed__@register_fixture.build()__set_as_default_factory_for_type__Use(OtherFactory.build)from __future__ import annotations# tests/factories.py
from polyfactory.factories.msgspec_factory import MsgspecFactory
from polyfactory.pytest_plugin import register_fixture
from myapp.events import OrderCreatedEvent # msgspec.Struct
@register_fixture
class OrderCreatedEventFactory(MsgspecFactory[OrderCreatedEvent]):
__model__ = OrderCreatedEvent# tests/test_orders.py
from __future__ import annotations # consumer module — fine to use future annotations
from litestar.testing import AsyncTestClient
import pytest
@pytest.mark.anyio
async def test_create_order_emits_event(
client: AsyncTestClient,
order_created_event_factory: OrderCreatedEventFactory,
) -> None:
payload = order_created_event_factory.build()
response = await client.post("/orders", json=payload)
assert response.status_code == 201
assert response.json()["id"] == payload.idOrderCreatedEventreferences/__random_seed____faker____allow_none_optionals____set_as_default_factory_for_type__Factory.create_factorycoverage()@register_fixturepolyfactory.pytest_pluginTestClientAsyncTestClientcoverage()litestar-testing