Skip to main content
https://github.com/cdent/gabbi/workflows/tests/badge.svg Documentation Status

Gabbi

Release Notes

Gabbi is a tool for running HTTP tests where requests and responses are represented in a declarative YAML-based form. The simplest test looks like this:

tests:
- name: A test
  GET: /api/resources/id

See the docs for more details on the many features and formats for setting request headers and bodies and evaluating responses.

Gabbi is tested with Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14 and pypy3.10.

Tests can be run using unittest style test runners, pytest or from the command line with a gabbi-run script.

There is a gabbi-demo repository which provides a tutorial via its commit history. The demo builds a simple API using gabbi to facilitate test driven development.

Purpose

Gabbi works to bridge the gap between human readable YAML files that represent HTTP requests and expected responses and the obscured realm of Python-based, object-oriented unit tests in the style of the unittest module and its derivatives.

Each YAML file represents an ordered list of HTTP requests along with the expected responses. This allows a single file to represent a process in the API being tested. For example:

  • Create a resource.

  • Retrieve a resource.

  • Delete a resource.

  • Retrieve a resource again to confirm it is gone.

At the same time it is still possible to ask gabbi to run just one request. If it is in a sequence of tests, those tests prior to it in the YAML file will be run (in order). In any single process any test will only be run once. Concurrency is handled such that one file runs in one process.

These features mean that it is possible to create tests that are useful for both humans (as tools for improving and developing APIs) and automated CI systems.

Testing and Developing Gabbi

To get started, after cloning the repository, you should install the development dependencies:

$ pip install -r requirements-dev.txt

If you prefer to keep things isolated you can create a virtual environment:

$ virtualenv gabbi-venv
$ . gabbi-venv/bin/activate
$ pip install -r requirements-dev.txt

Gabbi is set up to be developed and tested using tox (installed via requirements-dev.txt). To run the built-in tests (the YAML files are in the directories gabbi/tests/gabbits_* and loaded by the file gabbi/test_*.py), you call tox:

tox -epep8,py311

If you have the dependencies installed (or a warmed up virtualenv) you can run the tests by hand and exit on the first failure:

python -m subunit.run discover -f gabbi | subunit2pyunit

Testing can be limited to individual modules by specifying them after the tox invocation:

tox -epep8,py311 -- test_driver test_handlers

If you wish to avoid running tests that connect to internet hosts, set GABBI_SKIP_NETWORK to True.

Metadata

Release files for gabbi 4.2.3

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

Source distribution (sdist)

Source distribution for gabbi 4.2.3
File Size Uploaded
gabbi-4.2.3.tar.gz 207.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gabbi 4.2.3
File Interpreter ABI Platform
gabbi-4.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 281.1 kB

Release files / gabbi-4.2.3.tar.gz

Download URL gabbi-4.2.3.tar.gz
Size 207.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c1c94bdf15ce53c8759599f1d288812d79ca89936746e83cc56ed5901b99f358
BLAKE2b-256 checksum
How to use checksums
495c1684e70a52ccf1a28a1727cdf26ea4e6e4c0de7a665fe0845c3b4539ff1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / gabbi-4.2.3-py3-none-any.whl

Download URL gabbi-4.2.3-py3-none-any.whl
Size 73.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
534ab23949c6042600f39743854cd9f7e2471aead409160aa7793981fab9580e
BLAKE2b-256 checksum
How to use checksums
1f1e32b4f7bfc177e0fc5bb88aa9b97780a6223c6194aedefe73f5cb646213f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

4.2.3 This release

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.46.0

2 release files

1.44.0

2 release files

1.43.0

2 release files

1.42.1

2 release files

1.42.0

2 release files

1.40.1

2 release files

1.39.1

2 release files

1.39.0

2 release files

1.38.0

2 release files

1.36.0

2 release files

1.35.1

2 release files

1.34.1

2 release files

1.34.0

1 release file

1.33.0

1 release file

1.32.0

1 release file

1.31.0

1 release file

1.30.2

1 release file

1.30.1

1 release file

1.30.0

1 release file

1.29.1

1 release file

1.29.0

1 release file

1.28.0

1 release file

1.27.1

1 release file

1.27.0

1 release file

1.26.1

1 release file

1.26.0

1 release file

1.25.0

1 release file

1.24.1

1 release file

1.24.0

1 release file

1.23.0

1 release file

1.22.0

1 release file

1.21.0

1 release file

1.20.0

1 release file

1.19.1

1 release file

1.19.0

1 release file

1.18.0

1 release file

1.17.5

1 release file

1.17.4

1 release file

1.17.3

1 release file

1.17.2

1 release file

1.17.1

1 release file

1.17.0

1 release file

1.16.1

1 release file

1.16.0

1 release file

1.15.0

1 release file

1.14.1

1 release file

1.14.0

1 release file

1.13.1

1 release file

1.13.0

1 release file

1.12.0

1 release file

1.11.0

1 release file

1.10.0

1 release file

1.9.0

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.0

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.101.2

1 release file

0.101.1

1 release file

0.101.0

1 release file

0.100.2

1 release file

0.100.1

1 release file

0.100.0

1 release file

0.99.2

1 release file

0.99.1

1 release file

0.99.0

1 release file

0.12.1

1 release file

0.12.0

1 release file

0.11.0

1 release file

0.10.0

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0.post14

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