[openstack-dev] [Cinder] How to mock the LOG inside cinder driver

Joshua Harlow harlowja at yahoo-inc.com
Tue Jun 3 18:24:49 UTC 2014


Why is mocking the LOG object useful/being used?

Testing functionality which depends on LOG triggers/calls imho is bad practice (and usually means something needs to be refactored).

LOG statements, and calls should be expected to move/be removed often so testing functionality in tests with them seems like the wrong approach.

My 2 cents.

From: Deepak Shetty <dpkshetty at gmail.com<mailto:dpkshetty at gmail.com>>
Reply-To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Date: Tuesday, June 3, 2014 at 9:16 AM
To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Subject: [openstack-dev] [Cinder] How to mock the LOG inside cinder driver

<deepakcs> Hi, whats the right way to mock the LOG variable inside the driver ? I am mocking mock.patch.object(glusterfs, 'LOG') as mock_logger
<deepakcs> and then doing...
<deepakcs> mock_logger.warning.assert_called_once() - which passes and is expected to pass per my code
<deepakcs> but
<deepakcs> mock_logger.debug.assert_called_once() - shud fail , but this also passes !
<deepakcs> any idea why ?

I feel that I am not mocking the LOG inside the driver correctly.

I also tried
           mock.patch.object(glusterfs.LOG, 'warning'),
            mock.patch.object(glusterfs.LOG, 'debug')
as mock_logger_warn and mock_logger_debug respectively

But here too
.debug and .warning both passes.. while the expected result is for .warning to pass and .debug to fail

So somehow I am unable to mock LOG properly

thanx,
deepak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140603/52467415/attachment.html>


More information about the OpenStack-dev mailing list