导入Python方法时遇AttributeError:'TestCase'无assertRaisesRegexp属性
解决AttributeError: 'TestCase' object has no attribute 'assertRaisesRegexp'问题
问题根源
Python 3.12 中,unittest.TestCase 的 assertRaisesRegexp 方法被正式移除,替换为 assertRaisesRegex。你使用的 ensure 库版本过旧,仍在调用这个已废弃的方法——哪怕你没主动编写单元测试,只要代码里用到了 ensure 的校验逻辑,就会间接触发这个错误。
解决方案
1. 优先升级ensure库
这是最稳妥的解决方式,直接更新到兼容Python 3.12的版本:
pip install --upgrade ensure
如果使用conda环境,执行:
conda update ensure
2. 临时手动修复(应急场景)
若升级后问题仍存在,或暂时无法升级库版本,可以手动修改源码:
- 执行
pip show ensure,查看输出里的Location字段,找到ensure库的安装路径 - 进入该路径下的
ensure目录,打开main.py文件 - 定位到第922行,将
unittest_case.assertRaisesRegexp替换为unittest_case.assertRaisesRegex - 保存文件后重启Jupyter Notebook
3. 检查导入逻辑
确认xyzClassifier.utils.common模块中是否使用了ensure库的装饰器(比如@ensure.that),这类校验逻辑可能间接触发了unittest相关代码——通常升级库后该问题会自动消失。
内容的提问来源于stack exchange,提问作者JoydeepG
相关产品推荐
相关产品推荐

