On 04/28/2014 02:00 PM, Deepak Shetty wrote:
I was writing this in test_glusterfs.py
def test_ensure_shares_unmounted_1share(self):
with contextlib.nested(
mock.patch.object(self._driver, '_load_shares_config'),
mock.patch.object(self._driver, '_ensure_share_unmounted')
) as (self._fake_load_shares_config, mock_ensure_share_unmounted):
#mock_shares = {'127.7.7.7:/gluster1': None}
#mock_load_shares_config.return_value = mock_shares
#self._driver.shares = mock_load_shares_config.return_value
self._driver._ensure_shares_unmounted()
mock_ensure_share_unmounted.assert_called_once()
mock_ensure_share_unmounted.assert_called_once_with(
'127.7.7.7:/gluster1')
for my patch @ https://review.openstack.org/#/c/86888/6
and i get the output as ..
======================================================================
FAIL:
cinder.tests.test_glusterfs.GlusterFsDriverTestCase.test_ensure_shares_unmounted_1share
----------------------------------------------------------------------
...
...
stderr: {{{
cinder/tests/test_glusterfs.py:736: DeprecationWarning: With-statements
now directly support multiple context managers
mock.patch.object(self._driver, '_ensure_share_unmounted')
}}}
Traceback (most recent call last):
File "cinder/tests/test_glusterfs.py", line 747, in
test_ensure_shares_unmounted_1share
'127.7.7.7:/gluster1')
File "/usr/lib/python2.7/site-packages/mock.py", line 845, in
assert_called_once_with
raise AssertionError(msg)
AssertionError: Expected to be called once. Called 0 times.
Can you help with why
'mock_ensure_share_unmounted.assert_called_once()' check passes
but
'mock_ensure_share_unmounted.assert_called_once_with('127.7.7.7:/gluster1')
check fails ?
Sure. This is because assert_called_once() is not a method of
mock.Mock() and therefore is "magic-mocked" to return a mock.MagicMock()
itself.
assert_called_once_with(), however, *is* an actual method of the
mock.Mock() object and therefore is failing because the
mock_unsure_share_unmounted mock was not called once with the expected
arguments.
The way to avoid the above problem is to use something called autospec'ing.
You can read more about this intricacy of mock here:
http://www.voidspace.org.uk/python/mock/helpers.html#autospeccing
Best,
-jay
In glusterfs.py ...
def _ensure_shares_unmounted(self):
self._load_shares_config(self.configuration.glusterfs_shares_config)
for share in self.shares.keys():
try:
self._ensure_share_unmounted(share)
except Exception as exc:
LOG.warning(_('Exception during unmounting %s') % (exc,))
thanx,
deepak
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev