I have a line of code that is:
if not hasattr(class.a, u'c'):
return
How do I mock out class so that class.a.c returns False for hasattr?
If I do this:
>>> from mock import MagicMock
>>> mock_class = MagicMock(spec=[u'a'])
>>> hasattr(mock_class, u'a')
True
>>> hasattr(mock_class, u'b')
False
>>> hasattr(mock_class.a, u'c')
True
Although I dont spec class.a.c, its being mocked!!!
You can delete the attribute, which will cause hasattr
to return False
.
From the Documentation:
>>> mock = MagicMock()
>>> hasattr(mock, 'm')
True
>>> del mock.m
>>> hasattr(mock, 'm')
False
>>> del mock.f
>>> mock.f
Traceback (most recent call last):
...
AttributeError: f
For your specific example, since mock_class.a
is another Mock, you can do del mock_class.a.c
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With