Skip to main content
Help us improve Python packaging – donate today!

wsgi_intercept installs a WSGI application in place of a real URI for testing.

Project Description

installs a WSGI application in place of a real URI for testing.

Introduction

Testing a WSGI application normally involves starting a server at a local host and port, then pointing your test code to that address. Instead, this library lets you intercept calls to any specific host/port combination and redirect them into a WSGI application importable by your test program. Thus, you can avoid spawning multiple processes or threads to test your Web app.

How Does It Work?

wsgi_intercept works by replacing httplib.HTTPConnection with a subclass, wsgi_intercept.WSGI_HTTPConnection. This class then redirects specific server/port combinations into a WSGI application by emulating a socket. If no intercept is registered for the host and port requested, those requests are passed on to the standard handler.

The functions add_wsgi_intercept(host, port, app_create_fn, script_name='') and remove_wsgi_intercept(host,port) specify which URLs should be redirect into what applications. Note especially that app_create_fn is a function object returning a WSGI application; script_name becomes SCRIPT_NAME in the WSGI app’s environment, if set.

Install

pip install -U wsgi_intercept

Packages Intercepted

Unfortunately each of the Web testing frameworks uses its own specific mechanism for making HTTP call-outs, so individual implementations are needed. At this time there are implementations for httplib2 and requests in both Python 2 and 3, urllib2 and httplib in Python 2 and urllib.request and http.client in Python 3.

If you are using Python 2 and need support for a different HTTP client, require a version of wsgi_intercept<0.6. Earlier versions include support for mechanize, webtest, webunit and zope.testbrowser. It is quite likely that support for these versions will be relatively to add back in to the new version.

The best way to figure out how to use interception is to inspect the tests. More comprehensive documentation available upon request.

History

Pursuant to Ian Bicking’s “best Web testing framework” post, Titus Brown put together an in-process HTTP-to-WSGI interception mechanism for his own Web testing system, twill. Because the mechanism is pretty generic – it works at the httplib level – Titus decided to try adding it into all of the other Python Web testing frameworks.

The Python 2 version of wsgi-intercept was the result. Kumar McMillan later took over maintenance.

The current version works with Python 2.6, 2.7, 3.3 and 3.4 and was assembled by Chris Dent. Testing and documentation improvements from Sasha Hart.

Project Home

This project lives on GitHub. Please submit all bugs, patches, failing tests, et cetera using the Issue Tracker.

Additional documentation is available on Read The Docs.

Release history Release notifications

History Node

1.7.0

History Node

1.6.0

History Node

1.5.1

History Node

1.5.0

History Node

1.4.1

History Node

1.4.0

History Node

1.3.2

History Node

1.3.1

History Node

1.3.0

History Node

1.2.2

History Node

1.2.0

History Node

1.1.3

History Node

1.1.2

History Node

1.1.1

History Node

1.1.0

History Node

1.0.1

History Node

1.0.0

History Node

0.10.3

History Node

0.10.2

History Node

0.10.1

History Node

0.10.0

History Node

0.9.1

History Node

0.9.0

History Node

0.8.1

History Node

0.8.0

History Node

0.7.0

This version
History Node

0.6.5

History Node

0.6.4

History Node

0.6.3

History Node

0.6.2

History Node

0.6.1

History Node

0.6.0

History Node

0.5.1

History Node

0.5.0

History Node

0.4

History Node

0.3.4

History Node

0.3.3

History Node

0.3.2

History Node

0.3.1

History Node

0.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
wsgi_intercept-0.6.5.tar.gz (10.6 kB) Copy SHA256 hash SHA256 Source None Jun 24, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page