を提起されていないのは、我々はそのようななめらかを持っていると仮定しましょう:は、どのようにエラーをチェックするためにpytestを使用するには
import py, pytest
ERROR1 = ' --- Error : value < 5! ---'
ERROR2 = ' --- Error : value > 10! ---'
class MyError(Exception):
def __init__(self, m):
self.m = m
def __str__(self):
return self.m
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
return i
# ---------------------- TESTS -------------------------
def test_foo1():
with pytest.raises(MyError) as e:
foo(3)
assert ERROR1 in str(e)
def test_foo2():
with pytest.raises(MyError) as e:
foo(11)
assert ERROR2 in str(e)
def test_foo3():
....
foo(7)
....
Q:どのように私はMyErrorが提起されていないこと、test_foo3()をテストすることができますか? )
def test_foo3():
assert foo(7) == 7
しかし、私はpytest.raises(経由でそれをテストしたい: それは私がちょうどテストすることができていることは明らかです。どこか可能ですか?たとえば :場合には、その機能「foo」がまったく返り値を持っていない、
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
それは私見、この方法をテストするために意味をなすことができます。
問題を探しているようですが、コード 'foo(7)'は問題ありません。正しいメッセージが得られ、すべてのpytest出力でデバッグするのが簡単になります。あなたが@Faruk( ''予期しないエラー... '')から強制した提案は、エラーについては何も言わず、あなたは固執します。それをより良くするためにできることは、 'test_foo3_works_on_integers_within_range()'のようなあなたの意図を伝えることだけです。 – dhill