特定の例外をインポートすることを停止し、with
pytest.raisesステートメントでそれを使用していますか?なぜこれは機能しないのですか?あなたが直面している問題の詳細をもっと詳しく説明できるなら、もっと役に立つでしょう。
# your code
class CustomError(Exception):
pass
def foo():
raise ValueError('everything is broken')
def bar():
raise CustomError('still broken')
#############
# your test
import pytest
# import your module, or functions from it, incl. exception class
def test_fooErrorHandling():
with pytest.raises(ValueError) as excinfo:
foo()
assert excinfo.value.message == 'everything is broken'
def test_barSimpleErrorHandling():
# don't care about the specific message
with pytest.raises(CustomError):
bar()
def test_barSpecificErrorHandling():
# check the specific error message
with pytest.raises(MyErr) as excinfo:
bar()
assert excinfo.value.message == 'oh no!'
def test_barWithoutImportingExceptionClass():
# if for some reason you can't import the specific exception class,
# catch it as generic and verify it's in the str(excinfo)
with pytest.raises(Exception) as excinfo:
bar()
assert 'MyErr:' in str(excinfo)
はpy.test.raises'と 'あなたの最後のように見える'今更新pytest.raises' –
@IanHunterで、おかげで(私はまだ「py.test」バージョンを使用してい伝えることができますする必要があります。 )) – pfctdayelise
python3の場合: 'assert str(excinfo.value)== 'すべてが壊れています' – incognick