The discover project allows to discover and run unittests and we can easily integrate it in a tox
run. As an example, perform a checkout of Pygments:
hg clone https://bitbucket.org/birkenfeld/pygments-main
and add the following tox.ini
to it:
[tox]
envlist = py27,py35,py36
[testenv]
changedir = tests
commands = discover
deps = discover
If you now invoke tox
you will see the creation of three virtual environments and a unittest-run performed in each of them.
Michael Foord has contributed a tox.ini
file that allows you to run all tests for his mock project, including some sphinx-based doctests. If you checkout its repository with:
git clone https://github.com/testing-cabal/mock.git
The checkout has a tox.ini file that looks like this:
[tox]
envlist = py27,py34,py35,py36
[testenv]
deps = unittest2
commands = unit2 discover []
[testenv:py36]
commands =
unit2 discover []
sphinx-build -b doctest docs html
sphinx-build docs html
deps =
unittest2
sphinx
[testenv:py27]
commands =
unit2 discover []
sphinx-build -b doctest docs html
sphinx-build docs html
deps =
unittest2
sphinx
mock uses unittest2 to run the tests. Invoking tox
starts test discovery by executing the unit2 discover
commands on Python 2.7, 3.4, 3.5 and 3.6 respectively. Against Python3.6 and Python2.7 it will additionally run sphinx-mediated doctests. If building the docs fails, due to a reST error, or any of the doctests fails, it will be reported by the tox run.
The []
parentheses in the commands provide positional substitution
which means you can e.g. type:
tox -- -f -s SOMEPATH
which will ultimately invoke:
unit2 discover -f -s SOMEPATH
in each of the environments. This allows you to customize test discovery in your tox
runs.