Documenting raises/does_not_raise + parametrize

This commit is contained in:
Arel Cordero 2019-01-24 22:29:47 +00:00
parent afe9fd5ffd
commit c166b80a8c
1 changed files with 23 additions and 0 deletions

View File

@ -559,3 +559,26 @@ As the result:
- The test ``test_eval[1+7-8]`` passed, but the name is autogenerated and confusing. - The test ``test_eval[1+7-8]`` passed, but the name is autogenerated and confusing.
- The test ``test_eval[basic_2+4]`` passed. - The test ``test_eval[basic_2+4]`` passed.
- The test ``test_eval[basic_6*9]`` was expected to fail and did fail. - The test ``test_eval[basic_6*9]`` was expected to fail and did fail.
Parametrizing conditional raising with ``pytest.raises``
--------------------------------------------------------------------
Use ``pytest.raises`` and ``pytest.does_not_raise`` together with the
``parametrize`` decorator to write parametrized tests in which some
tests raise exceptions and others do not. For example::
import pytest
@pytest.mark.parametrize('example_input,expectation', [
(3, pytest.does_not_raise()),
(2, pytest.does_not_raise()),
(1, pytest.does_not_raise()),
(0, pytest.raises(ZeroDivisionError)),
])
def test_division(example_input, expectation):
"""Test how much I know division."""
with expectation:
assert (6 / example_input) is not None
In this example, the first three tests should run unexceptionally,
while the fourth test should raise ``ZeroDivisionError``.