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!
sudo pip install boddle
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
.
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. str s 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.
$ git clone https://github.com/keredson/boddle.git
$ cd boddle
$ python tests.py
............
----------------------------------------------------------------------
Ran 12 tests in 0.001s
OK