Skip to main content

PostgreSQL testing helpers

Project description

Postgresql testing

Simple Postgres helpers for testing with Python - no docker, brew, apt, etc - uses postgresql-binaries. The interface is simple, but close enough to the metal that you can use it to eg. have a new database per testing thread/use a fresh database from a TEMPLATE or archive.

pip install postgresql-testing 'postgresql-binaries==18.*'

Then to use, eg:

import postgresql_testing

@pytest.fixture(scope="session")
def db() -> Iterator[str]:
    config = postgresql_testing.DatabaseConfig.default("testing-db")
    postgresql_testing.initdb(config.directory, on_existing="use")
    with postgresql_testing.serve(config):
        postgresql_testing.ensure_user(config)
        postgresql_testing.create_database(config, on_existing="replace")
        yield config.dsn

There are various useful flags and things - the source code is short enough to just dive in.


There are a couple of helpers for creating/using template dbs and archives. I have some vague long term plan for some kind of "Docker layers for migrated databases" with clever caching (or not), but I'm not quite sure what it looks like yet.

Some benchmarking:

number of tables create from template dump to archive create from archive
100 80ms 80ms (0.2MB) 150ms
1000 500ms 300ms (2MB) 1100ms

On macos using a ramdisk, it is slightly quicker:

number of tables create from template dump to archive create from archive
100 70ms 70ms 120ms
1000 350ms 300ms 1000ms

See claims/advice from planet Go.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

postgresql_testing-0.0.2.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

postgresql_testing-0.0.2-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file postgresql_testing-0.0.2.tar.gz.

File metadata

  • Download URL: postgresql_testing-0.0.2.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for postgresql_testing-0.0.2.tar.gz
Algorithm Hash digest
SHA256 7b862f5555bcba2ce672f0e1e5458f6a1959168d8afcd9e9ac4935e5ad35cd58
MD5 3d1dbbccd8ccebcd89418f075e1bc5ca
BLAKE2b-256 2a090f819e28243194c7fffd8a5cfe5bbbc1c28fe70e0f863b18bc463f28ab11

See more details on using hashes here.

File details

Details for the file postgresql_testing-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: postgresql_testing-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for postgresql_testing-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7ab19751f3c992d5168bad5768d2257913278b1071bc74ec7e8134f3d3491df4
MD5 884de4587fe62cccf0cbf692e25f039e
BLAKE2b-256 930bd133633e571be999528a4d354f22ed8b142918aa680b514f04588c4b0dcc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page