问题摘要:我正在尝试导入另一个文件中提到的两个python方法并收到以下错误,
在 Jupyter Notebook(另一个名为 verify.ipynb 的文件)中,我导入了“common.py”文件中提到的两个方法
Line 1. from xyzClassifier.constants import *
Line 2. from xyzClassifier.utils.common import read_yaml, create_directories
第 1 行,执行成功,但是当我尝试执行这两行时,显示以下错误,
AttributeError: 'TestCase' object has no attribute 'assertRaisesRegexp'Cell Execution Error
IDE、操作系统和 Python 版本: macOS 中的 VS Code 和 python 3.12.5
问题步骤及代码片段:
但是当我尝试通过
将这些方法导入 Jupyter 笔记本(.ipynb 文件)的一个单元格中时
from xyzClassifier.utils.common import read_yaml, create_directories,
it is throwing the error, 'AttributeError: 'TestCase' object has no attribute 'assertRaisesRegexp'Cell Execution Error'
我做了什么:
我期待这两种方法能够成功导入。我尝试将这两个方法放入 try 中,除了块、抛出和捕获异常之外,但没有任何效果。
except assertRaisesRegexp as arr:
raise arr
except Exception as e:
raise e
详细错误跟踪:
{
"name": "AttributeError",
"message": "'TestCase' object has no attribute 'assertRaisesRegexp'",
"stack": "---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[29], line 3
2 from xyzClassifier.constants import *
----> 3 from xyzClassifier.utils.common import read_yaml, create_directories
5 import json
6 import joblib
----> 7 from ensure import ensure_annotations
8 from box import ConfigBox
9 from pathlib import Path
1 from __future__ import absolute_import, division, print_function, unicode_literals
3 from ._types import NumericString, NumericByteString, IntegerString, IntegerByteString
----> 4 from .main import EnsureError, Ensure, Check, ensure, check, ensure_raises, ensure_raises_regex, ensure_annotations
venv/lib/python3.12/site-packages/ensure/main.py:922
919 check = Check()
921 ensure_raises = unittest_case.assertRaises
--> 922 ensure_raises_regex = unittest_case.assertRaisesRegexp
AttributeError: 'TestCase' object has no attribute 'assertRaisesRegexp'"
}
任何帮助将不胜感激。
您自己可能没有进行任何单元测试,但 ensure 库可以。看来您需要更新到 version 1.0.4 才能支持 Python 3.12。为了向后兼容,Python 长期以来一直保留
assertRaisesRegexp
(Python 2 中的名称)作为 assertRaisesRegex
的别名。在 3.12 中,它被最终删除了,但之前版本的 Ensure 仍在使用它。