Raise exception for invalid mock assert calls

Several test cases were using the wrong mock assert methods.
The following patch corrects these calls and adds a method in
test.py (sourced from nova/test.py) to make sure they are
properly caught in the future.

Closes-Bug: #1429669
Change-Id: Ic6e5bca0c3ddbfb402e412b51e882859cb49108c
This commit is contained in:
Thang Pham
2015-03-01 19:43:58 -05:00
parent d79e122a5a
commit a9b9d53a2f
6 changed files with 223 additions and 173 deletions

View File

@@ -100,6 +100,29 @@ class Database(fixtures.Fixture):
os.path.join(CONF.state_path, self.sqlite_db))
def _patch_mock_to_raise_for_invalid_assert_calls():
def raise_for_invalid_assert_calls(wrapped):
def wrapper(_self, name):
valid_asserts = [
'assert_called_with',
'assert_called_once_with',
'assert_has_calls',
'assert_any_calls']
if name.startswith('assert') and name not in valid_asserts:
raise AttributeError('%s is not a valid mock assert method'
% name)
return wrapped(_self, name)
return wrapper
mock.Mock.__getattr__ = raise_for_invalid_assert_calls(
mock.Mock.__getattr__)
# NOTE(gibi): needs to be called only once at import time
# to patch the mock lib
_patch_mock_to_raise_for_invalid_assert_calls()
class TestCase(testtools.TestCase):
"""Test case base class for all unit tests."""