Welcome to the tox automation project¶
tox
aims to automate and standardize testing in Python. It is part
of a larger vision of easing the packaging, testing and release process
of Python software.
vision: standardize testing in Python - testing out of the box
What is tox?¶
tox is a generic virtualenv management and test command line tool you can use for:
checking your package installs correctly with different Python versions and interpreters
running your tests in each of the environments, configuring your test tool of choice
acting as a frontend to Continuous Integration servers, greatly reducing boilerplate and merging CI and shell-based testing.
in a nutshell:
Installation: pip install tox
Supported Pythons: CPython 2.6-3.6, jython, pypy
Operating systems: Linux, Windows, macOS, Unix
License: MIT
development: https://github.com/tox-dev
Basic example¶
First, install tox
with pip install tox
.
Then put basic information about your project and the test environments you
want your project to run in into a tox.ini
file residing
right next to your setup.py
file:
# content of: tox.ini , put in same dir as setup.py
[tox]
envlist = py26,py27
[testenv]
deps=pytest # install pytest in the venvs
commands=pytest # or 'nosetests' or ...
You can also try generating a tox.ini
file automatically, by running
tox-quickstart
and then answering a few simple questions.
To sdist-package, install and test your project against Python2.6 and Python2.7, just type:
tox
… and watch things happening (you must have python2.6 and python2.7 installed in your
environment otherwise you will see errors). When you run tox
a second time
you’ll note that it runs much faster because it keeps track of virtualenv details
and will not recreate or re-install dependencies. You also might want to
checkout the Examples to get some more ideas.
Current features¶
automation of tedious Python related test activities
test your Python package against many interpreter and dependency configs
- automatic customizable (re)creation of virtualenv test environments
- installs your
setup.py
based project into each virtual environment - test-tool agnostic: runs pytest, nose or unittests in a uniform manner
(new in 2.0) plugin system to modify tox execution with simple hooks.
uses pip and setuptools by default. Support for configuring the installer command through
install_command=ARGV
.cross-Python compatible: CPython-2.6, 2.7, 3.2 and higher, Jython and pypy.
cross-platform: Windows and Unix style environments
integrates with continuous integration servers like Jenkins and helps you to avoid boilerplatish and platform-specific build-step hacks.
full interoperability with devpi: is integrated with and is used for testing in the devpi system, a versatile pypi index server and release managing tool.
driven by a simple ini-style config file
documented examples and configuration
concise reporting about tool invocations and configuration errors
professionally Paid professional support