最佳答案
让我们假设我们有这样的 smth:
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)
....
问: 如何使 test _ foo3()进行测试,以确保没有引发 MyError? 很明显,我可以试试:
def test_foo3():
assert foo(7) == 7
但是我想通过 pytest.rose ()测试一下,有可能吗? 例如: 在一个例子中,那个函数“ foo”根本没有返回值,
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
用这种方法测试是有意义的,我的天。