This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!
Project Description

Test utilities for cherrypy. Can be run under py.test, nosetests or unittest.

Based on code provided by Sylvain Hellegouarch

The response returned by the methods on the class lribeiro.cherrypy.test.CPTestCase is added two properties: status_code and text, providing an easier way to retrieve the response body as a string and the status code as an integer

The class lribeiro.cherrypy.test.CPTestCase provides facilities to setup serverless testing and has helper methods to perform requests.

You need to provide a root class attribute when using CPTestCase that will be the root of your test application.

You can also provide a preserve_cookies class attribute to control whether the cookies must be resent with every request. This is useful when testing authentication. The default value is True.

method description
get() GET request
post() POST request
put() PUT request
delete() DELETE request
head() HEAD request
patch() PATCH request

These methods call the request() method with the specified http method set passing any additional parameter.

The request() method accepts the following parameters (none of them is required - defaults in parenthesis):

parameter description
path path to request (‘/’)
method method to request (‘GET’)
app_path path of the application to make requests against (”)
scheme http or https (‘http’)
proto http version (‘HTTP/1.1’)
data dict contaning data to post on request body (None)
headers dict contaning request headers to be sent (None)
cookies dict contaning cookies to be sent (None)
auto_redirect whether to follow redirect responses (False)
**kwargs data to be sent in querystring or request body, in case of POST or PUT

In addition to the request methods, the are assertion methods:

method description
assert_status assert a specific https status. Constants for http status can be found in lribeiro.cherrypy.test.httpstatus module
assert_ok shortcut to assert_status(httpstatus.OK)
assert_not_found shortcut to assert_status(httpstatus.NOT_FOUND)
assert_error shortcut to assert_status(httpstatus.INTERNAL_SERVER_ERROR)
assert_redirect assert the the response is a redirect
assert_redirect_to assert the the response is a redirect and verifies the Location of the redirect
assert_not_redirect assert that a response is not a redirect
assert_contains assert that the response body contains a string
assert_not_contains assert that the response body does not contain a string
assert_body assert that the response body is equals to a string
assert_header assert that the a response header has a specific value
assert_has_header assert that the response has a header
assert_cookie assert that the a response cookie has a specific value
assert_has_cookie assert that the response has a cookie
assert_path assert that the request path_info is the same as the one given

There is also pythonic versions of the assert_ methods in the unittest.TestCase class, like:

  • CPTestCase.assert_true
  • CPTestCase.assert_raises
  • CPTestCase.assert_in

and so on.

Developed under Python3.4 and tested against Python2.7, Python3.4 and pypy.

Example:

import cherrypy

from lribeiro.cherrypy.test import CPTestCase


class Root:
    @cherrypy.expose
    def index(self):
        return 'index'

    @cherrypy.expose
    def post(self, name):
        return 'name = ' + name

    @cherrypy.expose
    def redir(self, to)
        raise cherrypy.HTTPRedirect(to)


class TestTests(CPTestCase):
    root = Root()

    def test_index(self):
        self.get('/')
        self.assert_ok()
        self.assert_not_redirect()

    def test_post(self):
        self.post('/post', name='Lorem Ipsum')
        self.assert_contains('Lorem Ipsum')

    def test_redir(self):
        self.get('/redir', to='/some/page')
        self.assert_redirect('/some/page')

    def test_pythonic_assertion(self):
        self.assert_true(True)
        self.assert_equal('equal', 'equal')
        with self.assert_raises(Exception):
            raise Exception()
Release History

Release History

1.1.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
lribeiro.cherrypy.test-1.1.0-py2.py3-none-any.whl (12.8 kB) Copy SHA256 Checksum SHA256 py2.py3 Wheel Sep 18, 2014
lribeiro.cherrypy.test-1.1.0.tar.gz (10.7 kB) Copy SHA256 Checksum SHA256 Source Sep 18, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting