Welcome to the tox automation project — tox 2.9.0rc2.dev61 documentation

# 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

## Installation

    pip install tox

It is fine to install `tox` itself into a virtualenv environment.

## 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

- supports using different / multiple PyPI index servers