kaldırdı DEĞİLDİR kontrol etmek pytest kullanmak:nasıl böyle smth var Farz edelim ki Hata
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)
....
S: test_foo3() hiçbir MyError kaldırdı olduğunu test etmek nasıl yapabilirim? O ben sadece deneme verebilecek, açıktır:
def test_foo3():
assert foo(7) == 7
ama pytest.raises yoluyla test etmek istiyorum(). Bir şey olabilir mi? Örneğin: Bir durumda, bu "fan"
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
o imho, bu şekilde test etmek mantıklı olabilir, hiç geri dönüş değeri yoktur.
Sorun arama gibi görünüyor, 'foo (7)' kod testi gayet iyi. Doğru mesajı alacaksınız ve tüm pytest çıktılarıyla hata ayıklamak daha kolay olacak. @Faruk ('Beklenmeyen hata ...' ') 'dan zorladığınız öneri, hata hakkında hiçbir şey söylemiyor ve takılıp kalacaksınız. Bunu daha iyi yapmak için yapabileceğiniz tek şey, 'test_foo3_works_on_integers_within_range() 'gibi niyetinizi belirtmektir. – dhill