TransWikia.com

What is the best way to append custom message to the output when pytest.raises fails?

Stack Overflow Asked by Roman Ponomaryov on December 26, 2020

What I’m aiming at is – if I ran the following test:

def test_func():
    with pytest.raises(APIError):
        func()

and the func() did not raise APIError – I want to get custom message to the output, e.g. "No APIError caught"

Pytest had a feature specifically for this:

with raises(SomeError, message="Custom message here"):
    pass

https://docs.pytest.org/en/4.2.1/assert.html#assertions-about-expected-exceptions
but for some reason it didn’t make it to further versions (current is 6.0.2)

One Answer

You can replicate this behavior using the pytest.fail function after the function you expect to raise an exception, since that will only run if an exception is not raised. The deprecation notice explains the reasoning for its removal, and offers this alternate approach:

import pytest

def func():
    return

def test_func():
    with pytest.raises(ValueError):
        func()
        pytest.fail("Oh no!")
$ pytest test.py

collected 1 item

test.py F                                                                                                                                                                                                   [100%]

==================================================================================================== FAILURES =====================================================================================================
____________________________________________________________________________________________________ test_func ____________________________________________________________________________________________________

    def test_func():
        with pytest.raises(ValueError):
            func()
>           pytest.fail("Oh no!")
E           Failed: Oh no!

test.py:9: Failed
============================================================================================= short test summary info =============================================================================================
FAILED test.py::test_func - Failed: Oh no!
================================================================================================ 1 failed in 0.16s ================================================================================================

Correct answer by mattficke on December 26, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP