A goody-bag of nifty plugins for pytest
| OS | Build | Coverage | 
|---|---|---|
![]()  | 
||
![]()  | 
| Plugin | Description | Supported OS | 
|---|---|---|
| pytest-server-fixtures | Extensible server-running framework with a suite of well-known databases and webservices included | ![]()  | 
| pytest-shutil | Unix shell and environment management tools | ![]()  | 
| pytest-profiling | Profiling plugin with tabular heat graph output and gprof support for C-Extensions | ![]()  | 
| pytest-devpi-server | DevPI server fixture | ![]()  | 
| pytest-pyramid-server | Pyramid server fixture | ![]()  | 
| pytest-webdriver | Selenium webdriver fixture | ![]()  | 
| pytest-virtualenv | Virtualenv fixture |   ![]()  | 
| pytest-qt-app | PyQT application fixture | ![]()  | 
| pytest-listener | TCP Listener/Reciever for testing remote systems |   ![]()  | 
| pytest-git | Git repository fixture |   ![]()  | 
| pytest-svn | SVN repository fixture | ![]()  | 
| pytest-fixture-config | Configuration tools for Py.test fixtures |   ![]()  | 
| pytest-verbose-parametrize | Makes py.test's parametrize output a little more verbose | ![]()  | 
All of these plugins share setup code and configuration so there is a top-level Makefile to automate process of setting them up for test and development.
You have python installed on your path, preferably using a virtualenv
To install all dependencies and set up all of the packages for development simply run:
    make developTo install all the packages as wheel distributions:
    make installTo run all the tests:
    make testSome of the plugins have complex dependencies, particularly pytest-server-fixtures.
To make it easier to develop, there is a Vagrantfile which will setup a virtual machine
with all the dependencies installed to run the tests.
To set up the environment in Vagrant (requires virtualbox) and run the tests:
    $ vagrant up
    $ vagrant ssh
    # ..... inside vagrant ....
    . venv/bin/activate
    cd src
    make develop
    make testTo run a command in each of the package directories, use the foreach.sh script.
This example will build all the wheel distributions:
    ./foreach.sh python setup.py bdist_wheelTo run a command only on packages that have changed since the last tagged release, use --changed.
This example will only upload packages that need releasing:
    ./foreach.sh python setup.py bdist_wheel uploadTo run a command with no extra output other than from what you run, use --quiet
    ./foreach.sh --quiet grep PY3
