Skip to content

vodik/pytest-exceptional

Repository files navigation

pytest-exceptional

See Build Status on Travis CI See Build Status on AppVeyor

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.

About

Exceptional exceptions for pytest

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages