Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 36 additions & 12 deletions docs/TESTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,38 @@ We recommend you install [pytest](http://pytest.org/latest/) and
[pytest-cache](http://pythonhosted.org/pytest-cache/). `pytest` is a testing
tool that will give you more flexibility over running your unit tests.

If you want to install `pytest` for Python 2, then use `pip`.

```bash
pip install pytest pytest-cache
```
If you instead want the version of `pytest` for Python 3, then use `pip3`.

```bash
pip3 install pytest pytest-cache
```

If you get a `command not found` response from your system, you can find a
tutorial on how to install `pip`
[here](https://pip.pypa.io/en/stable/installing/).

**Note:** Whichever version of `pytest` you install last will be the default one used whenever `pytest` is executed, regardless of whether you have installed both versions.

If you want to check what the default version of `pytest` being used is, run the following:

```bash
pytest --version
```

If you have either version of `pytest` installed and you want to specifically run one of the versions, you can run that version by using `python` with the `-m` flag.

For example, you could run the Python 3 version of pytest like so:

```bash
$ python3 -m pytest --version
This is pytest version 3.2.3, imported from /usr/local/lib/python3.5/dist-packages/pytest.py
```

If you choose not to install `pytest`, you can still run tests individually and
skip the rest of this tutorial:

Expand All @@ -29,7 +53,7 @@ an example here), place yourself in the directory where that exercise has been
fetched and run:

```bash
py.test bob_test.py
pytest bob_test.py
```

**Note:** To run the tests you need to pass the name of the testsuite file to
Expand All @@ -56,22 +80,22 @@ The above will run all the tests, whether they fail or not. If you'd rather stop
the process and exit on the first failure, run:

```bash
py.test -x bob_test.py
pytest -x bob_test.py
```

### Failed Tests First

`pytest-cache` remembers which tests failed, and can run those tests first.

```bash
py.test --ff bob_test.py
pytest --ff bob_test.py
```

### Running All Tests for All Exercises

```bash
cd exercism/python/
py.test
pytest
```

## Recommended Workflow
Expand All @@ -80,7 +104,7 @@ We recommend you run this command while working on exercises.

```bash
cd exercism/python/bob
py.test -x --ff bob_test.py
pytest -x --ff bob_test.py
```

## PDB
Expand All @@ -89,28 +113,28 @@ Will drop you into the python debugger when a test fails. To learn how to use
pdb, check out the
[documentation](https://docs.python.org/3/library/pdb.html#debugger-commands).

You may also be interested in watching [Clayton Parker's "So you think you can
pdb?" PyCon 2015 talk](https://www.youtube.com/watch?v=P0pIW5tJrRM)

```bash
py.test --pdb bob_test.py
pytest --pdb bob_test.py
```

You may also be interested in watching [Clayton Parker's "So you think you can
pdb?" PyCon 2015 talk](https://www.youtube.com/watch?v=P0pIW5tJrRM).

## PEP8

PEP8 is the [Style Guide for Python
Code](https://www.python.org/dev/peps/pep-0008/). If you would like to test for
compliance to the style guide, install
[pytest-pep8](https://pypi.python.org/pypi/pytest-pep8)
[pytest-pep8](https://pypi.python.org/pypi/pytest-pep8).

```bash
pip install pytest-pep8
```

and add the pep8 flag to your command
Then, just add the `--pep8` flag to your command

```bash
py.test --pep8 bob_test.py
pytest --pep8 bob_test.py
```

Read the [pytest documentation](http://pytest.org/latest/contents.html#toc) and
Expand Down