从另一个文件导入方法时 - AttributeError: 'TestCase' object has no attribute 'assertRaisesRegexp'Cell Execution Error

问题描述 投票:0回答:1

问题摘要:我正在尝试导入另一个文件中提到的两个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

问题步骤及代码片段:

  1. 我在文件夹结构中有一个文件,例如 common.py,例如“xyzClassifier.utils.common”
  2. 这个文件有多个方法,其中两个方法是read_yaml()和create_directories()
  3. 我在另一个目录中有一个 .ipynb 文件,我用它来测试(无 UnitTesing)这些方法,

但是当我尝试通过

将这些方法导入 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'
  1. 我没有进行任何单元测试

我做了什么:

我期待这两种方法能够成功导入。我尝试将这两个方法放入 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'"
}

任何帮助将不胜感激。

python attributeerror execution testcase
1个回答
0
投票

您自己可能没有进行任何单元测试,但 ensure 库可以。看来您需要更新到 version 1.0.4 才能支持 Python 3.12。为了向后兼容,Python 长期以来一直保留

assertRaisesRegexp
(Python 2 中的名称)作为
assertRaisesRegex
的别名。在 3.12 中,它被最终删除了,但之前版本的 Ensure 仍在使用它。

© www.soinside.com 2019 - 2024. All rights reserved.