Skip to main content

py.test extension for per-test couchdb databases using couchdbkit

Project description

pytest-couchdbkit

pytest-couchdbkit is a simple pytest extension that manages test databases for your couchdbkit using apps.

In order to use it, you only need to set the ini option couchdbkit_suffix to something fitting your app. Additionally you may use couchdbkit_backend to select the gevent/eventlet backends.

To setup couchapps before running the tests, there is the pytest_couchdbkit_push_app(server, dbname) hook

It can be used to create a pristine database, which is replicated into each test database.

The provided funcarg couchdb will be a freshly flushed database named pytest_ + couchdbkit_suffix,

additionally, after each test item, the database will be dumped to tmpdir.join(couchdb.dump)

which is a simple file having entries in the format:

number(\d+) + "\r\n" + number bytes + "\r\n"

entries are:

  • the db info

  • documents

  • raw attachment data following the document

Attachments are ordered by name, so they can be reassigned to their metadata on loading.

The dump format is meant to be human-readable.

Future

  • fs fixtures (like couchapp)

  • code fixtures

  • dump fixtures

  • comaring a db to sets of defined fixtures

CHANGELOG

from 0.5 to 0.5.1

  • fix MANIFEST.in

from 0.4 to 0.5

  • fix breaking testruns that dont actually use it

  • add a lot of tests i should have done before 0.4

  • add support for pytest-xdist, if a slave is detected, push_app wont be called, and dbname gets the gw id appended

from 0.3 to 0.4

  • add pytest_couchdbkit_push_app hook

from 0.2 to 0.3

  • switch dump format to chunked encoding

  • pretty json in dumps

  • attachments in dumps

  • utility functions for loading dumps back to a database

from 0.1 to 0.2

  • use json-lines as extension for the dump

  • condense json to one line per document for humanly acceptable parsinig

  • fail if no couchdbkit_prefix is set

0.1

  • initial stuff

Supported by

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