Karthikeyan Singaravelan <[email protected]> added the comment:
mock uses dir to iterate through the attributes that needs to be specced [0]. Unless the variable is initialized it's not listed in dir. Below is an example where age is initialized and name is not. name is not present in dir(Person) and hence spec will not be able to detect this. This is similar to https://bugs.python.org/issue36580. cat /tmp/baz.py class Person: name: str age: int = 10 print(dir(Person)) print(Person.name) python /tmp/baz.py ['__annotations__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age'] Traceback (most recent call last): File "/tmp/baz.py", line 6, in <module> print(Person.name) AttributeError: type object 'Person' has no attribute 'name' [0] https://github.com/python/cpython/blob/e005ead49b1ee2b1507ceea94e6f89c28ecf1f81/Lib/unittest/mock.py#L2647 ---------- components: +Library (Lib) -Tests nosy: +xtreak _______________________________________ Python tracker <[email protected]> <https://bugs.python.org/issue40864> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
