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
Built Distribution
Hashes for lribeiro.cherrypy.test-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ee31f578fbc15ad49ac8e731cb911788068f868d6282be0ded499163495f1f1 |
|
MD5 | 06922b56c73ed3252324b3de368256f6 |
|
BLAKE2b-256 | cb825a70d3d8c88541214d73654823a6a10f21cdfd466e3d95a7f33b9c56780e |
Hashes for lribeiro.cherrypy.test-1.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1407259715e07542340e62c3db3f38156de8606782e2aeff5004553817157b55 |
|
MD5 | ed441e43e4bd8d0707ccc68fb641147f |
|
BLAKE2b-256 | 950e9efad41f245dbbb67090e098c9a567f6f98bda68f3d32b7f16b858e16e05 |