python runtime_error ai_generated true

AttributeError: 'module' object has no attribute 'some_func'

ID: python/pytest-monkeypatch-attribute-not-exist

Also available as: JSON · Markdown · 中文
80%Fix Rate
84%Confidence
0Evidence
2024-05-03First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.9 active

Root Cause

使用 monkeypatch 尝试修补不存在的属性,通常因为拼写错误或模块路径错误。

generic

中文

使用 monkeypatch 尝试修补不存在的属性,通常因为拼写错误或模块路径错误。

Workarounds

  1. 90% success 使用正确的完整路径
    monkeypatch.setattr('module.submodule.func', lambda: 42)
  2. 95% success 先导入模块对象再修补
    import module
    monkeypatch.setattr(module, 'func', lambda: 42)

Dead Ends

Common approaches that don't work:

  1. 使用 setattr 而不是 monkeypatch.setattr 50% fail

    尝试使用 setattr 直接设置属性,但 monkeypatch 的上下文管理器自动恢复会失败

  2. 修补错误的模块路径 60% fail

    尝试修补模块的 __init__.py 中的函数,但实际函数定义在子模块中