Pytest Testing Idioms: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 3: Line 3:
* [[Pytest#Subjects|Pytest]]
* [[Pytest#Subjects|Pytest]]
=Overview=
=Overview=
A function that starts with <code>test</code> is automatically considered a test to be executed.


=Tested Code is Supposed to Throw Exception=
=Tested Code is Supposed to Throw Exception=

Revision as of 05:50, 12 March 2022

External

Internal

Overview

A function that starts with test is automatically considered a test to be executed.

Tested Code is Supposed to Throw Exception

import pytest

def test_something_that_should_throw_exception():
    with pytest.raises(Exception) as info:
        my_method()

If the tested code raises a more specific exception, you can use that instead:

def test_something_that_should_throw_exception():
    with pytest.raises(ValueError) as info:
        my_method()

This tests the exception arguments:

def test_something_that_should_throw_exception():
    with pytest.raises(ValueError) as info:
        my_method()
    # important: interaction with 'info' must take place outside the with block
    assert info.value.args[0] == "some message"
    assert "some message" in str(info.value)

Also see:

Python Language | Exceptions