Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

The definitive testing tool for Python. Born under the banner of Behavior Driven Development.

Project description

# 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)
[![Read The Docs Status](https://readthedocs.org/projects/pip/badge/)](https://mamba-bdd.readthedocs.io/en/latest/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/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).

## Install

I recommend to use pipenv for managing your dependencies, thus you can install mamba like any other Python package.

By example:

```
$ pipenv install mamba
```

But you also can use pip:

```
$ pip install mamba
```


## Getting Started

Write a very simple example that describes your code behaviour:

```python
# tennis_spec.py

from mamba import description, context, it
from expects import expect, equal

with description('Tennis') as self:
with it('starts with 0 - 0 score'):
rafa_nadal = "Rafa Nadal"
roger_federer = "Roger Federer"
game = Game(rafa_nadal, roger_federer)

expect(game.score()).to(equal((0, 0)))
```


Run the example, and don't forget to watch it fail!

```
$ pipenv run mamba tennis_spec.py

F

1 examples failed of 1 ran in 0.0023 seconds

Failures:

1) Tennis it starts with 0 - 0 score
Failure/Error: tennis_spec.py game = Game(rafa_nadal, roger_federer)
NameError: global name 'Game' is not defined

File "tennis_spec.py", line 8, in 00000001__it starts with 0 - 0 score--
game = Game(rafa_nadal, roger_federer)
```

Now write as little code for making it pass.

```python
# tennis_spec.py

from mamba import description, context, it
from expects import expect, equal

import tennis

with description('Tennis') as self:
with it('starts with 0 - 0 score'):
rafa_nadal = "Rafa Nadal"
roger_federer = "Roger Federer"
game = tennis.Game(rafa_nadal, roger_federer)

expect(game.score()).to(equal((0, 0)))
```

```python
# tennis.py

class Game(object):
def __init__(self, player1, player2):
pass

def score(self):
return (0, 0)
```

Run the spec file and enjoy that all tests are green!

```
$ pipenv run mamba tennis_spec.py

.

1 examples ran in 0.0022 seconds
```

## Official Manual

You can read more features about mamba in its [official manual](https://mamba-bdd.readthedocs.io/en/latest/)

## Contributors

Here's a [list](https://github.com/nestorsalceda/mamba/graphs/contributors) of all the people who have contributed.

I'm really grateful to each and every of them!

If you want to be one of them, fork [repository](http://github.com/nestorsalceda/mamba) and send a pull request.

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
mamba-0.9.3.tar.gz (11.3 kB) Copy SHA256 hash SHA256 Source None Mar 3, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page