pytest
does wonderful assert introspection
so it is easy to find differences in strings especially if the difference is in white space. Now I use a slightly complicated test helper that I reuse in many testcases. The helper has its own module, too and for that module I want to add assert introspection.
helpers.py:
... def my_helper(): assert 'abcy' == 'abcx'
test_mycase.py:
from .helpers import my_helper def test_assert_in_tc(): assert 'abcy' == 'abcx' def test_assert_in_helper(): my_helper()
test report shows helpful information for asserts within tests but not for asserts within the helper
:
=============================================================== FAILURES ================================================================ ___________________________________________________________ test_assert_in_tc ___________________________________________________________ def test_assert_in_tc(): > assert 'abcy' == 'abcx' E assert 'abcy' == 'abcx' E - abcy E ? ^ E + abcx E ? ^ tests/test_pytest_assert.py:9: AssertionError _________________________________________________________ test_assert_in_helper _________________________________________________________ def test_assert_in_helper(): > my_helper() tests/test_pytest_assert.py:13: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def my_helper(): > assert 'abcy' == 'abcx' E AssertionError tests/helpers.py:258: AssertionError ======================================================= 2 failed in 0.24 seconds ========================================================
As a workaround I output additional info with the assert but the output still looks weird and makes the code blow up. Any ideas how I can activate pytest assert introspection within the helper file?
I found a different, but related question unfortunately I could not get the solution working so far:
import pytest from .helpers import my_helper pytest.register_assert_rewrite('helpers.my_helper')
I had to put the register_assert_rewrite into tests/__init__.py like so:
import pytest # we want to have pytest assert introspection in the helpers pytest.register_assert_rewrite('tests.helpers')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With