Skip to content

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

Closed as not planned
@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

    stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions