Skip to main content

An implementation of pytest.raises as a pytest.mark fixture

Project description

pytest-raises
===================================

[![Current Build Status](https://travis-ci.org/Authentise/pytest-raises.svg?branch=master)](https://travis-ci.org/Authentise/pytest-raises)

A [pytest][] plugin implementation of pytest.raises as a pytest.mark fixture

Features
--------

Adds functionality for marking tests with a `pytest.mark.raises` fixture, which functions similarly to using `with pytest.raises`


Requirements
------------

- python 2.7 or above
- pytest 2.8.1 or above


Installation
------------

You can install "pytest-raises" via [pip][] from [PyPI][]

```
$ pip install pytest-raises
```

Usage
-----

Marking a test with the `@pytest.mark.raises()` decorator will mark that the code the test executes is expected to raise an error. This is different from `@pytest.mark.xfail()` as it does not mean the test itself might fail, but instead that the "pass" for the test is that the code raises an error.

It accepts an `exception` keyword argument, which is the class of error expected to be raised.

It will allow tests which raise errors to pass. The main usage is to assert that an error of a specific type is raise.

A very simple example is:

```python
import pytest

class SomeException(Exception):
pass

class AnotherException(Exception):
pass

@pytest.mark.raises(exception = SomeException)
def test_mark_raises_named():
raise SomeException('the message')

@pytest.mark.raises()
def test_mark_raises_general():
raise AnotherException('the message')

```

A more useful example using test parametrization is:

```python
import pytest

class SomeException(Exception):
pass

class AnotherException(Exception):
pass

@pytest.mark.parametrize('error', [
None,
pytest.mark.raises(SomeException('the message'), exception=SomeException),
pytest.mark.raises(AnotherException('the message'), exception=AnotherException),
pytest.mark.raises(Exception('the message')),
])
def test_mark_raises(error):
if error:
raise error

```

All of these tests pass. These examples are actual [tests for this plugin][].

License
-------

Distributed under the terms of the [MIT][] license, "pytest-raises" is free and open source software


Issues
------

If you encounter any problems, please [file an issue][] along with a detailed description.

[MIT]: http://opensource.org/licenses/MIT
[file an issue]: https://github.com/Authentise/pytest-raises/issues
[pytest]: https://github.com/pytest-dev/pytest
[tests for this plugin]: https://github.com/Authentise/pytest-raises/blob/master/tests/test_raises.py
[pip]: https://pypi.python.org/pypi/pip/
[PyPI]: https://pypi.python.org/pypi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-raises-0.7.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file pytest-raises-0.7.tar.gz.

File metadata

  • Download URL: pytest-raises-0.7.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pytest-raises-0.7.tar.gz
Algorithm Hash digest
SHA256 03845e093f53ff3d5bb21a9d0525cb5ea8c36bd887887203ac7b1db8b5f85fc0
MD5 96d55a1a827d1af0ad81c23b2753d9ca
BLAKE2b-256 05cee77800866e07239135b022f433ff40dce5671b8a62dcaffcb8d74e0c2ec5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page