From b289f8ab26d6837ca6841b04a006c54c89a67eff Mon Sep 17 00:00:00 2001 From: Federico Ressi Date: Wed, 21 Mar 2018 15:43:46 +0100 Subject: [PATCH] Improve patch and patchobject Base test case method attributes. Let patch and patchobject methods forward method parameters to wrapped mock.patch and mock.patch.object functions. Change-Id: Ia4a9e3d476504e8e2869f394aa880f0dd2a5d808 --- tempest/tests/base.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/tempest/tests/base.py b/tempest/tests/base.py index ca81d4d605..0b53b45a66 100644 --- a/tempest/tests/base.py +++ b/tempest/tests/base.py @@ -18,7 +18,7 @@ from oslotest import base class TestCase(base.BaseTestCase): - def patch(self, target, **kwargs): + def patch(self, target, *args, **kwargs): """Returns a started `mock.patch` object for the supplied target. The caller may then call the returned patcher to create a mock object. @@ -27,23 +27,35 @@ class TestCase(base.BaseTestCase): patcher object, as this method automatically adds a cleanup to the test class to stop the patcher. - :param target: String module.class or module.object expression to patch - :param **kwargs: Passed as-is to `mock.patch`. See mock documentation - for details. + :param target: string module.class or module.object expression to patch + :param *args: passed as-is to `mock.patch`. + :param **kwargs: passed as-is to `mock.patch`. + + See mock documentation for more details: + https://docs.python.org/3.5/library/unittest.mock.html#unittest.mock.patch """ - p = mock.patch(target, **kwargs) + + p = mock.patch(target, *args, **kwargs) m = p.start() self.addCleanup(p.stop) return m - def patchobject(self, target, attribute, new=mock.DEFAULT): + def patchobject(self, target, attribute, *args, **kwargs): """Convenient wrapper around `mock.patch.object` Returns a started mock that will be automatically stopped after the test ran. + + :param target: object to have the attribute patched + :param attribute: name of the attribute to be patched + :param *args: passed as-is to `mock.patch.object`. + :param **kwargs: passed as-is to `mock.patch.object`. + + See mock documentation for more details: + https://docs.python.org/3.5/library/unittest.mock.html#unittest.mock.patch.object """ - p = mock.patch.object(target, attribute, new) + p = mock.patch.object(target, attribute, *args, **kwargs) m = p.start() self.addCleanup(p.stop) return m