断言失败了,测试用例却显示通过。

问题遇到的现象和发生背景

添加了检查点,然后执行测试用例。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。因此,主程序可以获得这些异常。