Python Hooks Bridge for Dredd API Testing Framework
Project description
About
This package contains a bridge between Dredd API Testing Framework and Python environment to ease implementation of testing hooks provided by Dredd. Write Dredd hooks in Python to glue together API Blueprint with your Python project
Usage example:
import dredd_hooks as hooks
@hooks.before_all
def foo(transactions):
for t in transactions:
t['request']['headers']['content-type'] = 'application/json'
Download
You can see all the available versions at PyPI.
From source (tar.gz or checkout)
Unpack the archive, enter the dredd-hooks-python directory and run:
python setup.py install
Setuptools/PyPI
Alternatively it can be installed from PyPI, either manually downloading the files and installing as described above or using:
pip install dredd_hooks
Usage
Create a hook file in hooks.py:
import dredd_hooks as hooks
@hooks.before("Machines > Machines collection > Get Machines")
def before_hook(transaction):
transaction['skip'] = "true"
Run it with Dredd:
$ dredd apiary.apib localhost:3000 --language python --hookfiles ./hooks.py
API
Module dredd_hooks defines following decorators before, after, before_all, after_all, before_each, after_each, before_validation, before_each_validation. before, before_validation and after hooks are identified by transaction name.
You can combine those decorators together. So one function can be used for different hooks but be aware that some hooks have a list of all transactions as an argument and not a single transaction.
import dredd_hooks as hooks
@hooks.after_all
@hooks.before_all
@hooks.before_each
@hooks.after_each
@hooks.before_validation('Machines > Machines collection > Get Machines')
@hooks.before("Machines > Machines collection > Get Machines")
@hooks.after("Machines > Machines collection > Get Machines")
def multi_hook_function(trans):
if isinstance(trans, list):
print('called with list of transactions')
else:
if trans['name'] == 'Machines > Machines collection > Get Machines':
trans['skip'] = 'true'
Usage is very similar to sync JS hooks API
Contributing
Fork it
Create your feature branch (git checkout -b my-newfeature)
Commit your changes (git commit -am 'Add some feature')
Push (git push origin my-new-feature)
Create a new Pull Request
Testing
Don’t forget about tests, see test directory. The project uses unittest package and tox.
For integration test with Dredd interface the project uses ruby based aruba so to get it running make sure you have Ruby installed and then do:
$ bundle install
After the setup you can run the test easily with:
$ bundle exec cucumber
More details about the integration test can be found in the dredd-hooks-template repo
- copyright:
Copyright (c) 2015 Apiary Czech Republic, s.r.o.
- license:
MIT, see LICENSE for details.
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.
Source Distribution
File details
Details for the file dredd_hooks-0.1.0.tar.gz
.
File metadata
- Download URL: dredd_hooks-0.1.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c5e88630643436472772fa66c791d1cfade7a4ed217a15dc118e7fd2196ed9e |
|
MD5 | 0b1f23c0905b58ce8d967748cfdf439b |
|
BLAKE2b-256 | fa609b155df278ab44c1cf5bc28306ee99faf3a1209ff7929a37dc48714dab7e |