pytest имеет обработанные исключения, позвольте мне показать вам один пример:
import pytest
from pytest_bdd import given
def pytest_bdd_step_error(request, feature, scenario, step, step_func, step_func_args, exception):
print(f'Step failed: {step}')
Это ловушка, которую вы можете использовать для обработки ошибок в ваших pytest step_defs, которые вы вызываете только в своем def test_failed (), так что вы можете написать это
def test_ok():
assert 0 == 0 # Test is ok
def test_failed():
#assert 1 == 0 # Test failed REMOVE THIS PART AND USE assert not
assert not 1 == 0
def test_different_exit_code():
open('/nonexistent', 'r')