问题:python 中assert断言,失败的用例,控制台不显示红色报错,pytest统计为pass,不统计为失败用例
现象:
业务断言失败,pytest统计为pass
原因分析:
python在pytest断言时,用了异常捕捉,断言失败也不会标记失败,因为try…except,当出现异常时,会进入except代码块,不会出现执行失败的情况,所以不会标记用例为失败。如果不抛出异常,则测试结果会表明为pass 的,所以需要再次抛出异常raise AssertionError(e),用例才会标记失败
修改前代码:
def assert_business(self, assert_business):
# 业务断言
for k, v in assert_business.items():
data = jsonpath.jsonpath(self.respond.json(), k)
try:
# 响应数据断言
assert data[0] == v, f"业务断言失败,实际拿到的结果{
data[0]},预期拿到的结果{
v}"
# 响应码断言
assert self.respond