Skip to main content

Test utilities for CherryPy

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()

Project details


Download files

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

Source Distribution

lribeiro.cherrypy.test-1.1.0.tar.gz (10.7 kB view hashes)

Uploaded Source

Built Distribution

lribeiro.cherrypy.test-1.1.0-py2.py3-none-any.whl (12.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page