Skip to content

unittest.mock.create_autospec() can crash when accessing properties from objects#98301

@joaoe

Description

@joaoe

Bug report

This crashes. It should not.

from unittest.mock import create_autospec class X: @property def myprop(self): raise Exception("some bug") create_autospec(X()) 

Now you could tell for me to fix X. The problem though is that in my project the problem is much more complex. X is some other class that is being autospeced and the getter touches some mock objects it does not like.

Your environment

  • CPython versions tested on: 3.10
  • Operating system and architecture: Windows

Fix

--- a\unittest\mock.py +++ b\unittest\mock.py for attr in dir(spec): - if iscoroutinefunction(getattr(spec, attr, None)): - _spec_asyncs.append(attr) + try:: + value = getattr(spec, attr, None) + except: + pass + else: + if iscoroutinefunction(value): + _spec_asyncs.append(attr) 

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions