添加了检查点,然后执行测试用例。assert断言失败了,但是用例执行成功
class Checkpoint():
def init(self):
self.flag = 0
def greater_than(self,a,b,msg=None):
try:
assert a>b
if msg:
print(msg)
except:
print(f'断言失败,预期结果a > b,实际结果:a={a},b={b}')
self.flag+=1
def del(self): ####收尾,自动回收
if self.flag>0:
assert False,'由于检查点错误,测试用例执行失败'
else:
print('为什么else一个会被执行?')
def test_04():
a = 2
b = 4
Checkpoint().greater_than(a,b)
checkpoint.py::test_04 PASSED [100%]断言失败,预期结果a > b,实际结果:a=2,b=4
======================== 1 passed, 1 warning in 0.02s =========================
断言失败,则该条测试用例执行失败
你写的也不对啊
class Checkpoint():
def init(self):
self.flag = 0
def greater_than(self, a, b, msg=None):
try:
assert a > b, 'a必须大于b'
if msg:
print(msg)
except:
print(f'断言失败,预期结果a > b,实际结果:a={a},b={b}')
def dele(self):
assert self.flag > 0, '由于检查点错误,测试用例执行失败'
def test_04():
a = 2
b = 4
Checkpoint().greater_than(a, b)
test_04()
# 断言失败,预期结果a > b,实际结果:a=2,b=4
原因可能是:如果 del 方法内部产生了异常,Python 不会抛出异常。不过,它会将异常信息发送到 stderr。因此,主程序可以获得这些异常。