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 develop
To install all the packages as wheel distributions:
make install
To run all the tests:
make test
Some 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 test
To 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_wheel
To 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 upload
To run a command with no extra output other than from what you run, use --quiet
./foreach.sh --quiet grep PY3