A unit testing tool for Python's bottle library.
Project description
Boddle
A unit testing tool for Python’s bottle library. We wrote this for our own testing purposes at https://www.hvst.com. Thanks brenguyen711 for the great name!
Install
sudo pip install boddle
Usage
Assuming you have a bottle route like this:
@bottle.get('/woot')
def woot():
return bottle.request.params['name']
You can unit test it like:
import unittest
from boddle import boddle
class TestIt(unittest.TestCase):
def testWoot(self):
with boddle(params={'name':'derek'}):
self.assertEqual(woot(), 'derek')
See `example.py <example.py>`__.
Options
The Bottle-specific params that are supported are:
Argument |
Notes |
---|---|
params |
Populates request.params. Takes a dict or list of pairs. Useful for both POST and GET params. |
path |
The path component of the url. Populates request.path, which always has a preceeding /. |
method |
POST, GET, etc. Bottle will uppercase the value. |
headers |
Any HTTP headers. Takes a dict. |
json |
Takes anything that can be consumed by json.dumps(). Also sets the content type of the request. |
url |
The full URL, protocol, domain, port, path, etc. Will be parsed until its urlparts before populating request.url. |
body |
The raw body of the request. Takes either a str or a file-like object. strs will be converted into file-like objects. Populated request.body. |
query |
Populates request.query. Takes a dict. |
All other keyword arguments will be assigned to the request object. For instance, we often do:
with boddle(current_user=someone):
# code that accesses bottle.request.current_user
You can also nest boddle calls. For instance:
with boddle(path='/woot'):
with boddle(params={'name':'derek'}):
# both path and params are set here
# only path is set here
ALL CHANGES TO ``bottle.request`` ARE REVERTED WHEN THE WITH BLOCK ENDS.
Testing
$ git clone https://github.com/keredson/boddle.git $ cd boddle $ python tests.py ............ ---------------------------------------------------------------------- Ran 12 tests in 0.001s OK
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.