Better exceptions
Project description
Better pytest Exceptions
This plugin attempts to make richer pytest exceptions a snap to write. For example, consider the following exception:
class StartFire(pytest.Exception):
__teststatus__ = 'fire', '🔥', ('FIRE', {'purple': True, 'bold': True})
def toterminal(self, longrepr, tw):
tw.line("FIRE! Please evacuate the building!")
longrepr.toterminal(tw)
def summary_header(self, header):
return "Fire started during {}".format(header)
When this specific exception class is thrown, the pretty printing and result categorization is now in the hands of the exception, making it more straightforward than writing special purpose plugins.:
============================= test session starts ============================== platform linux -- Python 3.6.0, pytest-3.0.7, py-1.4.32, pluggy-0.4.0 cachedir: .cache rootdir: /home/simon/src/pytest-exceptional, inifile: plugins: exceptional-0.1.0 collected 1 items tests/test_fail_test.py::test_fire FIRE ________________________ Fire started during test_fire _________________________ FIRE! Please evacuate the building! def test_fire(): > raise StartFire('There is a fire') E test_fail_test.StartFire: There is a fire tests/test_fail_test.py:47: StartFire ============================ 1 fire in 0.02 seconds ============================
TODO
Provide more control over formatting and presentation without making the API too cumbersome. Still very much an early prototype and probably not close to a stable API.
Installation
You can install “pytest-exceptional” via pip from PyPI:
$ pip install pytest-exceptional
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the MIT license, “pytest-exceptional” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
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.