Skip to main content

simple_module_test

Shared pytest fixtures and helpers for writing tests against simple_module apps and modules.

Fixtures are exposed via a pytest11 entry point, so installing the package is enough — no conftest.py import needed.

Install

pip install simple_module_test
# or, if you already pulled in the framework:
pip install "simple_module_hosting[dev]"

What it provides

All fixtures below are auto-registered via the pytest11 entry point — installing the package is enough.

  • fake_event_bus — a fresh recording EventBus per test that captures every publish/publish_nowait call.
  • build_test_app — callable returning a minimal FastAPI app that loads exactly one module.
  • settings — a ready-to-use Settings instance with an in-memory SQLite database and multi-tenancy enabled.
  • db_state, engine, db_session — fresh DatabaseState per test; db_session also creates all module tables and stamps alembic_version at head so the boot-time migration check passes.
  • app — a create_app(settings) instance with lifespan started and stopped.
  • client — an httpx.AsyncClient bound to the test app.
  • authenticated_client — same but with an admin user seeded and a forged session cookie attached. Requires the users module to be installed (it seeds the admin via users.bootstrap); apps scaffolded by smpy include it.
  • tenant_client — factory: async with tenant_client("member") as (client, tenant_id, user_id) signs in a fresh user who is an owner / admin / member (default owner) of a new tenant — or of tenant_id= when given — with that tenant active. Requires the users and tenants modules.

Usage

In a module's tests/test_something.py:

import pytest

pytestmark = pytest.mark.asyncio


async def test_create_order(authenticated_client):
    resp = await authenticated_client.post(
        "/api/orders",
        json={"customer_id": 1, "total_cents": 9900},
    )
    assert resp.status_code == 201
    assert resp.json()["total_cents"] == 9900

No fixture imports, no conftest.py — the pytest11 entry point auto-loads them.

Depends on

  • simple_module_core, simple_module_db, simple_module_hosting
  • pytest, pytest-asyncio, httpx, sqlalchemy

License

MIT — see LICENSE.

Metadata

Release files for simple-module-test 0.0.36

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-module-test 0.0.36
File Size Uploaded Provenance
simple_module_test-0.0.36.tar.gz 18.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for simple-module-test 0.0.36
File Interpreter ABI Platform
simple_module_test-0.0.36-py3-none-any.whl Python 3 none any Details

Total release size: 40.7 kB

Release files / simple_module_test-0.0.36.tar.gz

Download URL simple_module_test-0.0.36.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6bcd5db721e5506a81f716442215a2dab1096ddeb95e1aba6e65373b7110fafd
BLAKE2b-256 checksum
How to use checksums
da4772b06c15f2b5793f1c2b5fff7d31e354d215faf5d80b1e8d2a776e5e9aca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / simple_module_test-0.0.36-py3-none-any.whl

Download URL simple_module_test-0.0.36-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
43e34f4630d947e2b899e8240645b2862def7d353f627df0a2afa4b66415c595
BLAKE2b-256 checksum
How to use checksums
7f221aaf3d323630f29cdd8f3250ec5548f81368a98e22ef9e9982d8b72dbb76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Security for simple-module-test 0.0.36

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for simple_module_test-0.0.36.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.36 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page