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

Python unittest单元测试assertRaisesRegex异常信息匹配失败问题咨询

问题根本原因

该问题和你编写的异常捕获逻辑无关,核心问题出在unittest.assertRaisesRegex的匹配规则上:

  • assertRaisesRegex的第二个入参是正则表达式模式,不是普通的字符串全等匹配规则。
  • 测试_1+e16的用例中,待匹配的异常信息包含+符号,而+在正则语法中属于特殊量词,代表「前面的字符至少出现1次」,你没有对该符号做转义,导致正则匹配失败,单元测试报错。
  • 而_0的测试用例对应的异常信息没有任何正则特殊字符,直接写普通字符串即可匹配成功,因此测试可以正常通过。

修复方案

你可以任选以下一种方式修复测试用例:

  1. 手动对正则模式里的特殊字符做转义,在+前加反斜杠\,同时用原生字符串(前缀加r)避免Python转义反斜杠:
self.assertRaisesRegex(Exception, r'Expected a string containing a float number and a unit. "_1\+e16" does not fulfil this requirement', lambda: split_value_and_unit('_1+e16'))
  1. 如果你不需要正则匹配能力,仅需要判断异常信息和目标字符串完全一致,可以借助re.escape自动转义所有正则特殊字符:
import re
self.assertRaisesRegex(Exception, re.escape('Expected a string containing a float number and a unit. "_1+e16" does not fulfil this requirement'), lambda: split_value_and_unit('_1+e16'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:00