You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pytest失败时仅显示AssertException而非TimeoutException

简洁解决方法

直接在except块里主动抛出AssertionError,加上from None切断原异常的上下文关联,这样pytest就只会显示AssertionError的信息,不会输出原异常的栈日志,同时测试会正常标记为失败:

try:
    el = WebDriverWait(wd, 10).until(EC.presence_of_element_located((By.XPATH, "//textarea[@name='claims']")))
except (NoSuchElementException, TimeoutException):
    raise AssertionError("passportmock not working") from None

说明

  • 原来的assert False会触发AssertionError,但Python默认会把捕获到的TimeoutException/NoSuchElementException作为这个错误的上下文保留,pytest就会同时打印两个异常的栈信息。加from None就是明确告诉Python不要保留原异常的上下文,只展示我们抛出的AssertionError。
  • 这种写法不需要额外变量,代码更简洁。另外你之前用pytest.exit()不行的原因是,它会直接终止整个pytest进程,而非标记当前测试用例失败,所以测试状态会显示为成功。

内容的提问来源于stack exchange,提问作者MortenB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:41:32