Skip to main content
# mamba: the definitive test runner for Python

[![Build Status](https://travis-ci.org/nestorsalceda/mamba.svg)](https://travis-ci.org/nestorsalceda/mamba)
[![Latest PyPI Version](https://img.shields.io/pypi/v/mamba.svg)](https://pypi.python.org/pypi/mamba)


**mamba** is the definitive test runner for Python. Born under the banner of [behavior-driven development](https://en.wikipedia.org/wiki/Behavior-driven_development).

## Installation

To install **mamba**, just run:

```sh
$ pip install mamba
```


## Usage

```sh
$ mamba --help
```

You can also read the [Overview](#overview) and take a look at the [spec](./spec).


## Overview

```python
# Importing mamba is not needed!
# import mamba

with description('mamba'):
with it('is tested with mamba itself'):
pass

with it('supports Python 3'):
pass

with context('features'):
with context('defining example groups'):
with context('with arbitrary levels of nesting'):
with it('is supported'):
pass

with context('hooks'):
with before.all:
print('This code will be run once, before all examples in this group')

with before.each:
print('This code will be run once before each example in this group')

with after.each:
print('This code will be run once after each example in this group')

with after.all:
print('This code will be run once, after all examples in this group')

with context('pending tests'):
with _context('when running pending contexts (marked with an underscore)'):
with it('will not run any spec under a pending context'):
pass

with _it('will not run pending specs (marked with an underscore)'):
pass

with it('highlights slow tests'):
time.sleep(10)

with context('when using your code from the tests'):
with it('supports importing installed modules'):
pass

with it('supports importing local, non-installed modules'):
pass

with context('code coverage measurement'):
with it('is performed if you pass `--enable-coverage`'):
pass

with it('is performed using `coverage`'):
# see https://pypi.python.org/pypi/coverage/
pass

with it('is configured in a `.coveragerc` file at the root of your project'):
# see https://coverage.readthedocs.io/en/latest/config.html
pass


with context('when writing assertions'):
with it('does not include an assertion mechanism'):
pass

with it('works with virtually any assertion mechanism'):
pass

with it('can be used with expects'):
expect(True).to(be_true)

with it('can be used with hamcrest'):
assert_that(True, is_(True))

with it('can be used with should_dsl'):
True |should| be(True)

with it('can be used with sure'):
True.should.be.true

with it('can be used with plain assertions'):
assert True

with context('when using test doubles'):
with it('does not include a test doubles library'):
pass

with it('works with virtually any test doubles library'):
pass

with it('can be used with mockito'):
stub = mock()
when(stub).is_usable_with_mockito().thenReturn(True)

expect(stub.is_usable_with_mockito()).to(be_true)

with it('can be used with doublex'):
with Spy() as sender:
sender.is_usable_with_doublex().returns(True)

assert_that(sender.is_usable_with_doublex(), is_(True))
assert_that(sender.is_usable_with_doublex, called())

with it('can be used with mock'):
is_usable_with_mock = Mock(return_value=True)

assert is_usable_with_mock()
```


## Contributing

If you'd like to contribute, fork this [repository](http://github.com/nestorsalceda/mamba) and send a pull request.

Metadata

Release files for mamba 0.9.2

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

Source distribution (sdist)

Source distribution for mamba 0.9.2
File Size Uploaded
mamba-0.9.2.tar.gz 11.7 kB Details

Release files / mamba-0.9.2.tar.gz

Download URL mamba-0.9.2.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
16c3f533ec07a1e0b031271434bdddd134c974dd5a53495d4943a317094b6878
BLAKE2b-256 checksum
How to use checksums
4136ae2ca87c26b0d96698229a88f5f7036983c7a4b737476853c4983dba2212
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.11.3

1 release file

0.11.2

1 release file

0.11.1

1 release file

0.11.0

1 release file

0.10

1 release file

0.9.3

1 release file

This release

0.9.2 This release

1 release file

0.9.1

1 release file

0.8.6

1 release file

0.8.5

1 release file

0.8.4

1 release file

0.8.3

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8

1 release file

0.6

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

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