skip to navigation
skip to content

pytest-devpi-server 1.2.11

DevPI server fixture for py.test

# Py.test DevPi Server Fixture

DevPi server fixture for ``py.test``. The server is session-scoped by default
and run in a subprocess and temp dir to cleanup when it's done.

After the server has started up it will create a single user with a password,
and an index for that user. It then activates that index and provides a
handle to the ``devpi-client`` API so you can manipulate the server in your tests.

## Installation

Install using your favourite package manager:

pip install pytest-devpi-server
# or..
easy_install pytest-devpi-server

Enable the fixture explicitly in your tests or (not required when using setuptools entry points):

pytest_plugins = ['pytest_devpi_server']

## Example

Here's a noddy test case showing the main functionality:

def test_devpi_server(devpi_server):
# This is the client API for the server that's bound directly to the 'devpi' command-line tool.
# Here we list the available indexes
print(devpi_server.api('use', '-l'))

# Create and use another index
devpi_server.api('index', '-c', 'myindex')
devpi_server.api('index', 'use', 'myindex')

# Upload a package
import os

# Get some json data
import json
res = devpi_server.api('getjson', '/user/myindex')
assert json.loads(res)['result']['projects'] == ['my-package-name']


## `DevpiServer` class

Using this with the default `devpi_server` py.test fixture is good enough for a lot of
use-cases however you may wish to have more fine-grained control about the server configuration.

To do this you can use the underlying server class directly - this is an implenentation of the
`pytest-server-fixture` framework and as such acts as a context manager:

import json
from pytest_devpi_server import DevpiServer

def test_custom_server():
with DevPiServer(
# You can specify you own initial user and index

# You can provide a zip file that contains the initial server database,
# this is useful to pre-load any required packages for a test run
) as server:

assert not server.dead
res = server.api('getjson', '/bob/myindex')
assert 'pre-loaded-package' in json.loads(res)['result']['projects']

# Server should now be dead
assert server.dead

## Changelog

### 1.2.11 (2017-7-21)
* Fix for OSX binding to illegal local IP range (Thanks to Gavin Bisesi)
* Setup and Py3k fixes for pytest-profiling (Thanks to xoviat)
* We no longer try and bind port 5000 when reserving a local IP host, as someone could have bound it to
* Fix for #46 sourcing gprof2dot when the local venv has not been activated

### 1.2.10 (2017-2-23)
* Handle custom Pytest test items in pytest-webdriver

### 1.2.9 (2017-2-23)
* Add username into mongo server fixture tempdir path to stop collisions on shared multiuser filesystems

### 1.2.8 (2017-2-21)
* Return function results in

### 1.2.7 (2017-2-20)
* More handling for older versions of
* Allow virtualenv argument passing in pytest-virtualenv

### 1.2.6 (2017-2-16 )
* Updated devpi server server setup for devpi-server >= 2.0
* Improvements for random port picking
* HTTPD server now binds to by default to aid Selenium-style testing
* Updated mongodb server args for mongodb >= 3.2
* Corrections for mongodb fixture config and improve startup logic
* Added module-scoped mongodb fixture
* Handling for older versions of
* Fix for #40 where tests that chdir break pytest-profiling

### 1.2.5 (2016-12-09)
* Improvements for server runner host and port generation, now supports random local IPs
* Bugfix for RethinkDB fixture config

### 1.2.4 (2016-11-14)
* Bugfix for pymongo extra dependency
* Windows compatibility fix for pytest-virtualenv (Thanks to Jean-Christophe Fillion-Robin for PR)
* Fix symlink handling for pytest-shutil.cmdline.get_real_python_executable

### 1.2.3 (2016-11-7)
* Improve resiliency of Mongo fixture startup checks

### 1.2.2 (2016-10-27)
* Python 3 compatibility across most of the modules
* Fixed deprecated imports (Thanks to Bryan Moscon)
* Fixed deprecated multicall in pytest-profiling (Thanks to Paul van der Linden for PR)
* Added devpi-server fixture to create an index per test function
* Added missing licence file
* Split up httpd server fixture config so child classes can override loaded modules easier
* Added 'preserve_sys_path' argument to TestServer base class which exports the current python sys.path to subprocesses.
* Updated httpd, redis and jenkins runtime args and paths to current Ubuntu spec
* Ignore errors when tearing down workspaces to avoid race conditions in 'shutil.rmtree' implementation

### 1.2.1 (2016-3-1)
* Fixed pytest-verbose-parametrize for latest version of py.test

### 1.2.0 (2016-2-19)
* New plugin: git repository fixture

### 1.1.1 (2016-2-16)
* pytest-profiling improvement: escape illegal characters in .prof files (Thanks to Aarni Koskela for the PR)

### 1.1.0 (2016-2-15)

* New plugin: devpi server fixture
* pytest-profiling improvement: overly-long .prof files are saved as the short hash of the test name (Thanks to Vladimir Lagunov for PR)
* Changed default behavior of to not use a subshell for security reasons
* Corrected method to handle arguments the same as the parent method
* Removed deprecated '--distribute' from virtualenv args

### 1.0.1 (2015-12-23)

* Packaging bugfix

### 1.0.0 (2015-12-21)

* Initial public release

File Type Py Version Uploaded on Size
pytest-devpi-server-1.2.11.tar.gz (md5) Source 2017-07-21 7KB
pytest_devpi_server-1.2.11-py2-none-any.whl (md5) Python Wheel py2 2017-07-21 9KB
pytest_devpi_server-1.2.11-py2.7.egg (md5) Python Egg 2.7 2017-07-21 5KB