summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrzemysław Gajda <quermit@gmail.com>2012-04-24 14:49:42 -0700
committerPrzemysław Gajda <quermit@gmail.com>2012-04-24 14:49:42 -0700
commit17bee3dab43dd9c4feb1d0202d4a99699de8b00a (patch)
tree76448754027c022206601f504c229aa87c702a6e
parentec173d58f0e4e02e981a63a125666b8bda27a1c9 (diff)
parent64a3cb2446b664817329bac127da9fe91c7e54ee (diff)
downloadpymox-17bee3dab43dd9c4feb1d0202d4a99699de8b00a.tar.gz
Merge pull request #3 from quermit/fix-callables-inconsistency
Full Python 3 compatibility
-rw-r--r--.travis.yml2
-rwxr-xr-xmox.py117
-rwxr-xr-xmox_test.py369
3 files changed, 284 insertions, 204 deletions
diff --git a/.travis.yml b/.travis.yml
index 2997304..d12ee50 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,8 @@ python:
- "2.6"
- "2.7"
- "3.2"
+install: pip install pep8
script:
+ - pep8 --ignore E111 *.py || echo "Done"
- python mox_test.py
- python stubout_test.py
diff --git a/mox.py b/mox.py
index cc2bae1..56e159f 100755
--- a/mox.py
+++ b/mox.py
@@ -14,7 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# This file was mofified by quermit@gmail.com
+# This file was mofified by:
+# quermit@gmail.com
+# dawid.fatyga@gmail.com
"""Mox, an object-mocking framework for Python.
@@ -69,7 +71,6 @@ import inspect
import re
import types
import unittest
-import collections
import stubout
@@ -241,7 +242,7 @@ class Mox(object):
self._mock_objects = []
self.stubs = stubout.StubOutForTesting()
- def CreateMock(self, class_to_mock, attrs=None):
+ def CreateMock(self, class_to_mock, attrs=None, bounded_to=None):
"""Create a new mock object.
Args:
@@ -249,13 +250,15 @@ class Mox(object):
class_to_mock: class
attrs: dict of attribute names to values that will be set on the mock
object. Only public attributes may be set.
+ bounded_to: optionally, when class_to_mock is not a class, it points
+ to a real class object, to which attribute is bound
Returns:
MockObject that can be used as the class_to_mock would be.
"""
if attrs is None:
attrs = {}
- new_mock = MockObject(class_to_mock, attrs=attrs)
+ new_mock = MockObject(class_to_mock, attrs=attrs, class_to_bind=bounded_to)
self._mock_objects.append(new_mock)
return new_mock
@@ -305,18 +308,23 @@ class Mox(object):
of the type of attribute.
"""
+ if inspect.isclass(obj):
+ class_to_bind = obj
+ else:
+ class_to_bind = None
+
attr_to_replace = getattr(obj, attr_name)
attr_type = type(attr_to_replace)
if attr_type == MockAnything or attr_type == MockObject:
raise TypeError('Cannot mock a MockAnything! Did you remember to '
'call UnsetStubs in your previous test?')
-
+
type_check = (
attr_type in self._USE_MOCK_OBJECT or inspect.isclass(attr_to_replace)
or isinstance(attr_to_replace, object))
if type_check and not use_mock_anything:
- stub = self.CreateMock(attr_to_replace)
+ stub = self.CreateMock(attr_to_replace, bounded_to=class_to_bind)
else:
stub = self.CreateMockAnything(description='Stub for %s' % attr_to_replace)
stub.__name__ = attr_name
@@ -367,7 +375,7 @@ class Mox(object):
if attr_type == MockAnything or attr_type == MockObject:
raise TypeError('Cannot mock a MockAnything! Did you remember to '
'call UnsetStubs in your previous test?')
-
+
if not inspect.isclass(attr_to_replace):
raise TypeError('Given attr is not a Class. Use StubOutWithMock.')
@@ -380,6 +388,7 @@ class Mox(object):
self.stubs.UnsetAll()
+
def Replay(*args):
"""Put mocks into Replay mode.
@@ -453,22 +462,24 @@ class MockAnything(object):
return self.__class__.__dir__.__get__(self, self.__class__)
return self._CreateMockMethod(method_name)
-
+
def __str__(self):
return self._CreateMockMethod('__str__')()
-
+
def __call__(self, *args, **kwargs):
return self._CreateMockMethod('__call__')(*args, **kwargs)
-
+
def __getitem__(self, i):
return self._CreateMockMethod('__getitem__')(i)
-
- def _CreateMockMethod(self, method_name, method_to_mock=None):
+
+ def _CreateMockMethod(self, method_name, method_to_mock=None,
+ class_to_bind=object):
"""Create a new mock method call and return it.
Args:
# method_name: the name of the method being called.
# method_to_mock: The actual method being mocked, used for introspection.
+ # class_to_bind: Class to which method is bounded (object by default)
method_name: str
method_to_mock: a method object
@@ -478,13 +489,14 @@ class MockAnything(object):
return MockMethod(method_name, self._expected_calls_queue,
self._replay_mode, method_to_mock=method_to_mock,
- description=self._description)
+ description=self._description,
+ class_to_bind=class_to_bind)
def __nonzero__(self):
"""Return 1 for nonzero so the mock can be used as a conditional."""
return 1
-
+
def __bool__(self):
"""Return True for nonzero so the mock can be used as a conditional."""
return True
@@ -537,7 +549,7 @@ class MockAnything(object):
class MockObject(MockAnything):
"""A mock object that simulates the public/protected interface of a class."""
- def __init__(self, class_to_mock, attrs=None):
+ def __init__(self, class_to_mock, attrs=None, class_to_bind=None):
"""Initialize a mock object.
This determines the methods and properties of the class and stores them.
@@ -547,6 +559,8 @@ class MockObject(MockAnything):
class_to_mock: class
attrs: dict of attribute names to values that will be set on the mock
object. Only public attributes may be set.
+ class_to_bind: optionally, when class_to_mock is not a class at all, it
+ points to a real class
Raises:
PrivateAttributeError: if a supplied attribute is not public.
@@ -563,6 +577,12 @@ class MockObject(MockAnything):
self._known_methods = set()
self._known_vars = set()
self._class_to_mock = class_to_mock
+
+ if inspect.isclass(class_to_mock):
+ self._class_to_bind = self._class_to_mock
+ else:
+ self._class_to_bind = class_to_bind
+
try:
if inspect.isclass(self._class_to_mock):
self._description = class_to_mock.__name__
@@ -591,6 +611,11 @@ class MockObject(MockAnything):
else:
setattr(self, attr, value)
+ def _CreateMockMethod(self, *args, **kwargs):
+ """Overridden to provide self._class_to_mock to class_to_bind parameter."""
+ kwargs.setdefault("class_to_bind", self._class_to_bind)
+ return super(MockObject, self)._CreateMockMethod(*args, **kwargs)
+
def __getattr__(self, name):
"""Intercept attribute request on this object.
@@ -776,7 +801,7 @@ class MockObject(MockAnything):
# __call__ method
method = None
if type(self._class_to_mock) in (types.FunctionType, types.MethodType):
- method = self._class_to_mock;
+ method = self._class_to_mock
else:
method = getattr(self._class_to_mock, '__call__')
mock_method = self._CreateMockMethod('__call__', method_to_mock=method)
@@ -784,16 +809,28 @@ class MockObject(MockAnything):
return mock_method(*params, **named_params)
@property
- def __class__(self):
- """Return the class that is being mocked."""
-
- return self._class_to_mock
-
- @property
def __name__(self):
"""Return the name that is being mocked."""
return self._description
+ # TODO(dejw): this property stopped to work after I introduced changes with
+ # binding classes. Fortunately I found a solution in the form of
+ # __getattribute__ method below, but this issue should be investigated
+ @property
+ def __class__(self):
+ return self._class_to_mock
+
+ def __dir__(self):
+ """Return only attributes of a class to mock """
+ return dir(self._class_to_mock)
+
+ def __getattribute__(self, name):
+ """Return _class_to_mock on __class__ attribute. """
+ if name == "__class__":
+ return super(MockObject, self).__getattribute__("_class_to_mock")
+
+ return super(MockObject, self).__getattribute__(name)
+
class _MockObjectFactory(MockObject):
"""A MockObjectFactory creates mocks and verifies __init__ params.
@@ -848,12 +885,15 @@ class MethodSignatureChecker(object):
_NEEDED, _DEFAULT, _GIVEN = range(3)
- def __init__(self, method):
+ def __init__(self, method, class_to_bind=None):
"""Creates a checker.
Args:
# method: A method to check.
+ # class_to_bind: optionally, a class used to type check first method
+ # parameter, only used with unbound methods
method: function
+ class_to_bind: type or None
Raises:
ValueError: method could not be inspected, so checks aren't possible.
@@ -864,10 +904,17 @@ class MethodSignatureChecker(object):
except TypeError:
raise ValueError('Could not get argument specification for %r'
% (method,))
- if inspect.ismethod(method):
+ if inspect.ismethod(method) or class_to_bind:
self._args = self._args[1:] # Skip 'self'.
self._method = method
self._instance = None # May contain the instance this is bound to.
+ self._instance = getattr(method, "__self__", None)
+
+ # _bounded_to determines whether the method is bound or not
+ if self._instance:
+ self._bounded_to = self._instance.__class__
+ else:
+ self._bounded_to = class_to_bind or getattr(method, "im_class", None)
self._has_varargs = varargs is not None
self._has_varkw = varkw is not None
@@ -920,10 +967,10 @@ class MethodSignatureChecker(object):
#
# NOTE: If a Func() comparator is used, and the signature is not
# correct, this will cause extra executions of the function.
- if inspect.ismethod(self._method):
+ if inspect.ismethod(self._method) or self._bounded_to:
# The extra param accounts for the bound instance.
if len(params) > len(self._required_args):
- expected = getattr(self._method, 'im_class', None)
+ expected = self._bounded_to
# Check if the param is an instance of the expected class,
# or check equality (useful for checking Comparators).
@@ -934,7 +981,7 @@ class MethodSignatureChecker(object):
try:
param_equality = (params[0] == expected)
except:
- param_equality = False;
+ param_equality = False
if isinstance(params[0], expected) or param_equality:
@@ -982,7 +1029,7 @@ class MockMethod(object):
"""
def __init__(self, method_name, call_queue, replay_mode,
- method_to_mock=None, description=None):
+ method_to_mock=None, description=None, class_to_bind=None):
"""Construct a new mock method.
Args:
@@ -994,11 +1041,16 @@ class MockMethod(object):
# method_to_mock: The actual method being mocked, used for introspection.
# description: optionally, a descriptive name for this method. Typically
# this is equal to the descriptive name of the method's class.
+ # class_to_bind: optionally, a class that is used for unbound methods
+ # (or functions in Python3) to which method is bound, in order not
+ # to loose binding information. If given, it will be used for
+ # checking the type of first method parameter
method_name: str
call_queue: list or deque
replay_mode: bool
method_to_mock: a method object
description: str or None
+ class_to_bind: type or None
"""
self._name = method_name
@@ -1016,7 +1068,8 @@ class MockMethod(object):
self._side_effects = None
try:
- self._checker = MethodSignatureChecker(method_to_mock)
+ self._checker = MethodSignatureChecker(method_to_mock,
+ class_to_bind=class_to_bind)
except ValueError:
self._checker = None
@@ -1069,7 +1122,7 @@ class MockMethod(object):
"""Raise a TypeError with a helpful message."""
raise TypeError('MockMethod cannot be iterated. '
'Did you remember to put your mocks in replay mode?')
-
+
def __next__(self):
"""Raise a TypeError with a helpful message."""
raise TypeError('MockMethod cannot be iterated. '
@@ -1117,7 +1170,7 @@ class MockMethod(object):
if self._description:
full_desc = "%s.%s" % (self._description, full_desc)
return full_desc
-
+
def __hash__(self):
return id(self)
@@ -1643,7 +1696,7 @@ class SameElementsAs(Comparator):
# This happens because Mox uses __eq__ both to check object equality (in
# MethodSignatureChecker) and to invoke Comparators.
return False
-
+
try:
return set(self._expected_list) == set(actual_list)
except TypeError:
diff --git a/mox_test.py b/mox_test.py
index 6439060..434ae51 100755
--- a/mox_test.py
+++ b/mox_test.py
@@ -16,11 +16,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# This file was mofified by quermit@gmail.com
+# This file was mofified by:
+# quermit@gmail.com
+# dawid.fatyga@gmail.com
import io
import unittest
import re
+import sys
import mox
@@ -67,13 +70,13 @@ class OrTest(unittest.TestCase):
def testValidOr(self):
"""Or should be True if either Comparator returns True."""
- self.assert_(mox.Or(mox.IsA(dict), mox.IsA(str)) == {})
- self.assert_(mox.Or(mox.IsA(dict), mox.IsA(str)) == 'test')
- self.assert_(mox.Or(mox.IsA(str), mox.IsA(str)) == 'test')
+ self.assertTrue(mox.Or(mox.IsA(dict), mox.IsA(str)) == {})
+ self.assertTrue(mox.Or(mox.IsA(dict), mox.IsA(str)) == 'test')
+ self.assertTrue(mox.Or(mox.IsA(str), mox.IsA(str)) == 'test')
def testInvalidOr(self):
"""Or should be False if both Comparators return False."""
- self.failIf(mox.Or(mox.IsA(dict), mox.IsA(str)) == 0)
+ self.assertFalse(mox.Or(mox.IsA(dict), mox.IsA(str)) == 0)
class AndTest(unittest.TestCase):
@@ -81,12 +84,12 @@ class AndTest(unittest.TestCase):
def testValidAnd(self):
"""And should be True if both Comparators return True."""
- self.assert_(mox.And(mox.IsA(str), mox.IsA(str)) == '1')
+ self.assertTrue(mox.And(mox.IsA(str), mox.IsA(str)) == '1')
def testClauseOneFails(self):
"""And should be False if the first Comparator returns False."""
- self.failIf(mox.And(mox.IsA(dict), mox.IsA(str)) == '1')
+ self.assertFalse(mox.And(mox.IsA(dict), mox.IsA(str)) == '1')
def testAdvancedUsage(self):
"""And should work with other Comparators.
@@ -94,13 +97,13 @@ class AndTest(unittest.TestCase):
Note: this test is reliant on In and ContainsKeyValue.
"""
test_dict = {"mock" : "obj", "testing" : "isCOOL"}
- self.assert_(mox.And(mox.In("testing"),
+ self.assertTrue(mox.And(mox.In("testing"),
mox.ContainsKeyValue("mock", "obj")) == test_dict)
def testAdvancedUsageFails(self):
"""Note: this test is reliant on In and ContainsKeyValue."""
test_dict = {"mock" : "obj", "testing" : "isCOOL"}
- self.failIf(mox.And(mox.In("NOTFOUND"),
+ self.assertFalse(mox.And(mox.In("NOTFOUND"),
mox.ContainsKeyValue("mock", "obj")) == test_dict)
class FuncTest(unittest.TestCase):
@@ -111,13 +114,12 @@ class FuncTest(unittest.TestCase):
equals_one = lambda x: x == 1
always_none = lambda x: None
- self.assert_(mox.Func(equals_one) == 1)
- self.failIf(mox.Func(equals_one) == 0)
+ self.assertTrue(mox.Func(equals_one) == 1)
+ self.assertFalse(mox.Func(equals_one) == 0)
-
- self.failIf(mox.Func(always_none) == 1)
- self.failIf(mox.Func(always_none) == 0)
- self.failIf(mox.Func(always_none) == None)
+ self.assertFalse(mox.Func(always_none) == 1)
+ self.assertFalse(mox.Func(always_none) == 0)
+ self.assertFalse(mox.Func(always_none) == None)
def testFuncExceptionPropagation(self):
"""Exceptions within the validating function should propagate."""
@@ -130,7 +132,7 @@ class FuncTest(unittest.TestCase):
else:
return True
- self.assert_(mox.Func(raiseExceptionOnNotOne) == 1)
+ self.assertTrue(mox.Func(raiseExceptionOnNotOne) == 1)
self.assertRaises(TestException, mox.Func(raiseExceptionOnNotOne).__eq__, 2)
class SameElementsAsTest(unittest.TestCase):
@@ -138,32 +140,32 @@ class SameElementsAsTest(unittest.TestCase):
def testSortedLists(self):
"""Should return True if two lists are exactly equal."""
- self.assert_(mox.SameElementsAs([1, 2.0, 'c']) == [1, 2.0, 'c'])
+ self.assertTrue(mox.SameElementsAs([1, 2.0, 'c']) == [1, 2.0, 'c'])
def testUnsortedLists(self):
"""Should return True if two lists are unequal but have same elements."""
- self.assert_(mox.SameElementsAs([1, 2.0, 'c']) == [2.0, 'c', 1])
+ self.assertTrue(mox.SameElementsAs([1, 2.0, 'c']) == [2.0, 'c', 1])
def testUnhashableLists(self):
"""Should return True if two lists have the same unhashable elements."""
- self.assert_(mox.SameElementsAs([{'a': 1}, {2: 'b'}]) ==
+ self.assertTrue(mox.SameElementsAs([{'a': 1}, {2: 'b'}]) ==
[{2: 'b'}, {'a': 1}])
def testEmptyLists(self):
"""Should return True for two empty lists."""
- self.assert_(mox.SameElementsAs([]) == [])
+ self.assertTrue(mox.SameElementsAs([]) == [])
def testUnequalLists(self):
"""Should return False if the lists are not equal."""
- self.failIf(mox.SameElementsAs([1, 2.0, 'c']) == [2.0, 'c'])
+ self.assertFalse(mox.SameElementsAs([1, 2.0, 'c']) == [2.0, 'c'])
def testUnequalUnhashableLists(self):
"""Should return False if two lists with unhashable elements are unequal."""
- self.failIf(mox.SameElementsAs([{'a': 1}, {2: 'b'}]) == [{2: 'b'}])
+ self.assertFalse(mox.SameElementsAs([{'a': 1}, {2: 'b'}]) == [{2: 'b'}])
def testActualIsNotASequence(self):
"""Should return False if the actual object is not a sequence."""
- self.failIf(mox.SameElementsAs([1]) == object())
+ self.assertFalse(mox.SameElementsAs([1]) == object())
def testOneUnhashableObjectInActual(self):
"""Store the entire iterator for a correct comparison.
@@ -172,7 +174,7 @@ class SameElementsAsTest(unittest.TestCase):
unhashable object was encountered and then was restarted, so the actual list
appeared smaller than it was.
"""
- self.failIf(mox.SameElementsAs([1, 2]) == iter([{}, 1, 2]))
+ self.assertFalse(mox.SameElementsAs([1, 2]) == iter([{}, 1, 2]))
class ContainsKeyValueTest(unittest.TestCase):
@@ -181,15 +183,15 @@ class ContainsKeyValueTest(unittest.TestCase):
def testValidPair(self):
"""Should return True if the key value is in the dict."""
- self.assert_(mox.ContainsKeyValue("key", 1) == {"key": 1})
+ self.assertTrue(mox.ContainsKeyValue("key", 1) == {"key": 1})
def testInvalidValue(self):
"""Should return False if the value is not correct."""
- self.failIf(mox.ContainsKeyValue("key", 1) == {"key": 2})
+ self.assertFalse(mox.ContainsKeyValue("key", 1) == {"key": 2})
def testInvalidKey(self):
"""Should return False if they key is not in the dict."""
- self.failIf(mox.ContainsKeyValue("qux", 1) == {"key": 2})
+ self.assertFalse(mox.ContainsKeyValue("qux", 1) == {"key": 2})
class ContainsAttributeValueTest(unittest.TestCase):
@@ -207,15 +209,15 @@ class ContainsAttributeValueTest(unittest.TestCase):
def testValidPair(self):
"""Should return True if the object has the key attribute and it matches."""
- self.assert_(mox.ContainsAttributeValue("key", 1) == self.test_object)
+ self.assertTrue(mox.ContainsAttributeValue("key", 1) == self.test_object)
def testInvalidValue(self):
"""Should return False if the value is not correct."""
- self.failIf(mox.ContainsKeyValue("key", 2) == self.test_object)
+ self.assertFalse(mox.ContainsKeyValue("key", 2) == self.test_object)
def testInvalidKey(self):
"""Should return False if they the object doesn't have the property."""
- self.failIf(mox.ContainsKeyValue("qux", 1) == self.test_object)
+ self.assertFalse(mox.ContainsKeyValue("qux", 1) == self.test_object)
class InTest(unittest.TestCase):
@@ -223,24 +225,24 @@ class InTest(unittest.TestCase):
def testItemInList(self):
"""Should return True if the item is in the list."""
- self.assert_(mox.In(1) == [1, 2, 3])
+ self.assertTrue(mox.In(1) == [1, 2, 3])
def testKeyInDict(self):
"""Should return True if the item is a key in a dict."""
- self.assert_(mox.In("test") == {"test" : "module"})
+ self.assertTrue(mox.In("test") == {"test" : "module"})
def testItemInTuple(self):
"""Should return True if the item is in the list."""
- self.assert_(mox.In(1) == (1, 2, 3))
+ self.assertTrue(mox.In(1) == (1, 2, 3))
def testTupleInTupleOfTuples(self):
- self.assert_(mox.In((1, 2, 3)) == ((1, 2, 3), (1, 2)))
+ self.assertTrue(mox.In((1, 2, 3)) == ((1, 2, 3), (1, 2)))
def testItemNotInList(self):
- self.failIf(mox.In(1) == [2, 3])
+ self.assertFalse(mox.In(1) == [2, 3])
def testTupleNotInTupleOfTuples(self):
- self.failIf(mox.In((1, 2)) == ((1, 2, 3), (4, 5)))
+ self.assertFalse(mox.In((1, 2)) == ((1, 2, 3), (4, 5)))
class NotTest(unittest.TestCase):
@@ -248,15 +250,15 @@ class NotTest(unittest.TestCase):
def testItemInList(self):
"""Should return True if the item is NOT in the list."""
- self.assert_(mox.Not(mox.In(42)) == [1, 2, 3])
+ self.assertTrue(mox.Not(mox.In(42)) == [1, 2, 3])
def testKeyInDict(self):
"""Should return True if the item is NOT a key in a dict."""
- self.assert_(mox.Not(mox.In("foo")) == {"key" : 42})
+ self.assertTrue(mox.Not(mox.In("foo")) == {"key" : 42})
def testInvalidKeyWithNot(self):
"""Should return False if they key is NOT in the dict."""
- self.assert_(mox.Not(mox.ContainsKeyValue("qux", 1)) == {"key": 2})
+ self.assertTrue(mox.Not(mox.ContainsKeyValue("qux", 1)) == {"key": 2})
class StrContainsTest(unittest.TestCase):
@@ -265,23 +267,23 @@ class StrContainsTest(unittest.TestCase):
def testValidSubstringAtStart(self):
"""Should return True if the substring is at the start of the string."""
- self.assert_(mox.StrContains("hello") == "hello world")
+ self.assertTrue(mox.StrContains("hello") == "hello world")
def testValidSubstringInMiddle(self):
"""Should return True if the substring is in the middle of the string."""
- self.assert_(mox.StrContains("lo wo") == "hello world")
+ self.assertTrue(mox.StrContains("lo wo") == "hello world")
def testValidSubstringAtEnd(self):
"""Should return True if the substring is at the end of the string."""
- self.assert_(mox.StrContains("ld") == "hello world")
+ self.assertTrue(mox.StrContains("ld") == "hello world")
def testInvaildSubstring(self):
"""Should return False if the substring is not in the string."""
- self.failIf(mox.StrContains("AAA") == "hello world")
+ self.assertFalse(mox.StrContains("AAA") == "hello world")
def testMultipleMatches(self):
"""Should return True if there are multiple occurances of substring."""
- self.assert_(mox.StrContains("abc") == "ababcabcabcababc")
+ self.assertTrue(mox.StrContains("abc") == "ababcabcabcababc")
class RegexTest(unittest.TestCase):
@@ -296,23 +298,23 @@ class RegexTest(unittest.TestCase):
This ensures that re.search is used (instead of re.find).
"""
- self.assert_(mox.Regex(r"a\s+b") == "x y z a b c")
+ self.assertTrue(mox.Regex(r"a\s+b") == "x y z a b c")
def testNonMatchPattern(self):
"""Should return False if the pattern does not match the string."""
- self.failIf(mox.Regex(r"a\s+b") == "x y z")
+ self.assertFalse(mox.Regex(r"a\s+b") == "x y z")
def testFlagsPassedCorrectly(self):
"""Should return True as we pass IGNORECASE flag."""
- self.assert_(mox.Regex(r"A", re.IGNORECASE) == "a")
+ self.assertTrue(mox.Regex(r"A", re.IGNORECASE) == "a")
def testReprWithoutFlags(self):
"""repr should return the regular expression pattern."""
- self.assert_(repr(mox.Regex(r"a\s+b")) == "<regular expression 'a\s+b'>")
+ self.assertTrue(repr(mox.Regex(r"a\s+b")) == "<regular expression 'a\s+b'>")
def testReprWithFlags(self):
"""repr should return the regular expression pattern and flags."""
- self.assert_(repr(mox.Regex(r"a\s+b", flags=4)) ==
+ self.assertTrue(repr(mox.Regex(r"a\s+b", flags=4)) ==
"<regular expression 'a\s+b', flags=4>")
@@ -367,37 +369,37 @@ class IsATest(unittest.TestCase):
def testEqualityValid(self):
"""Verify that == correctly identifies objects of the same type."""
- self.assert_(mox.IsA(str) == 'test')
+ self.assertTrue(mox.IsA(str) == 'test')
def testEqualityInvalid(self):
"""Verify that == correctly identifies objects of different types."""
- self.failIf(mox.IsA(str) == 10)
+ self.assertFalse(mox.IsA(str) == 10)
def testInequalityValid(self):
"""Verify that != identifies objects of different type."""
- self.assert_(mox.IsA(str) != 10)
+ self.assertTrue(mox.IsA(str) != 10)
def testInequalityInvalid(self):
"""Verify that != correctly identifies objects of the same type."""
- self.failIf(mox.IsA(str) != "test")
+ self.assertFalse(mox.IsA(str) != "test")
def testEqualityInListValid(self):
"""Verify list contents are properly compared."""
isa_list = [mox.IsA(str), mox.IsA(str)]
str_list = ["abc", "def"]
- self.assert_(isa_list == str_list)
+ self.assertTrue(isa_list == str_list)
def testEquailtyInListInvalid(self):
"""Verify list contents are properly compared."""
isa_list = [mox.IsA(str),mox.IsA(str)]
mixed_list = ["abc", 123]
- self.failIf(isa_list == mixed_list)
+ self.assertFalse(isa_list == mixed_list)
def testSpecialTypes(self):
"""Verify that IsA can handle objects like io.StringIO."""
isA = mox.IsA(io.StringIO())
stringIO = io.StringIO()
- self.assert_(isA == stringIO)
+ self.assertTrue(isA == stringIO)
class IsAlmostTest(unittest.TestCase):
@@ -405,23 +407,23 @@ class IsAlmostTest(unittest.TestCase):
def testEqualityValid(self):
"""Verify that == correctly identifies nearly equivalent floats."""
- self.assertEquals(mox.IsAlmost(1.8999999999), 1.9)
+ self.assertEqual(mox.IsAlmost(1.8999999999), 1.9)
def testEqualityInvalid(self):
"""Verify that == correctly identifies non-equivalent floats."""
- self.assertNotEquals(mox.IsAlmost(1.899), 1.9)
+ self.assertNotEqual(mox.IsAlmost(1.899), 1.9)
def testEqualityWithPlaces(self):
"""Verify that specifying places has the desired effect."""
- self.assertNotEquals(mox.IsAlmost(1.899), 1.9)
- self.assertEquals(mox.IsAlmost(1.899, places=2), 1.9)
+ self.assertNotEqual(mox.IsAlmost(1.899), 1.9)
+ self.assertEqual(mox.IsAlmost(1.899, places=2), 1.9)
def testNonNumericTypes(self):
"""Verify that IsAlmost handles non-numeric types properly."""
- self.assertNotEquals(mox.IsAlmost(1.8999999999), '1.9')
- self.assertNotEquals(mox.IsAlmost('1.8999999999'), 1.9)
- self.assertNotEquals(mox.IsAlmost('1.8999999999'), '1.9')
+ self.assertNotEqual(mox.IsAlmost(1.8999999999), '1.9')
+ self.assertNotEqual(mox.IsAlmost('1.8999999999'), 1.9)
+ self.assertNotEqual(mox.IsAlmost('1.8999999999'), '1.9')
class ValueRememberTest(unittest.TestCase):
@@ -431,28 +433,28 @@ class ValueRememberTest(unittest.TestCase):
"""Verify that value will compare to stored value."""
value = mox.Value()
value.store_value('hello world')
- self.assertEquals(value, 'hello world')
+ self.assertEqual(value, 'hello world')
def testNoValue(self):
"""Verify that uninitialized value does not compare to "empty" values."""
value = mox.Value()
- self.assertNotEquals(value, None)
- self.assertNotEquals(value, False)
- self.assertNotEquals(value, 0)
- self.assertNotEquals(value, '')
- self.assertNotEquals(value, ())
- self.assertNotEquals(value, [])
- self.assertNotEquals(value, {})
- self.assertNotEquals(value, object())
- self.assertNotEquals(value, set())
+ self.assertNotEqual(value, None)
+ self.assertNotEqual(value, False)
+ self.assertNotEqual(value, 0)
+ self.assertNotEqual(value, '')
+ self.assertNotEqual(value, ())
+ self.assertNotEqual(value, [])
+ self.assertNotEqual(value, {})
+ self.assertNotEqual(value, object())
+ self.assertNotEqual(value, set())
def testRememberValue(self):
"""Verify that comparing against remember will store argument."""
value = mox.Value()
remember = mox.Remember(value)
- self.assertNotEquals(value, 'hello world') # value not yet stored.
- self.assertEquals(remember, 'hello world') # store value here.
- self.assertEquals(value, 'hello world') # compare against stored value.
+ self.assertNotEqual(value, 'hello world') # value not yet stored.
+ self.assertEqual(remember, 'hello world') # store value here.
+ self.assertEqual(value, 'hello world') # compare against stored value.
class MockMethodTest(unittest.TestCase):
@@ -465,19 +467,19 @@ class MockMethodTest(unittest.TestCase):
def testNameAttribute(self):
"""Should provide a __name__ attribute."""
- self.assertEquals('testMethod', self.mock_method.__name__)
+ self.assertEqual('testMethod', self.mock_method.__name__)
def testAndReturnNoneByDefault(self):
"""Should return None by default."""
return_value = self.mock_method(['original'])
- self.assert_(return_value == None)
+ self.assertTrue(return_value == None)
def testAndReturnValue(self):
"""Should return a specificed return value."""
expected_return_value = "test"
self.expected_method.AndReturn(expected_return_value)
return_value = self.mock_method(['original'])
- self.assert_(return_value == expected_return_value)
+ self.assertTrue(return_value == expected_return_value)
def testAndRaiseException(self):
"""Should raise a specified exception."""
@@ -493,7 +495,7 @@ class MockMethodTest(unittest.TestCase):
mutable_list[0] = 'mutation'
self.expected_method.WithSideEffects(modifier).AndReturn(1)
self.mock_method(local_list)
- self.assertEquals('mutation', local_list[0])
+ self.assertEqual('mutation', local_list[0])
def testWithReturningSideEffects(self):
"""Should call state modifier and propagate its return value."""
@@ -505,8 +507,8 @@ class MockMethodTest(unittest.TestCase):
return expected_return
self.expected_method.WithSideEffects(modifier_with_return)
actual_return = self.mock_method(local_list)
- self.assertEquals('mutation', local_list[0])
- self.assertEquals(expected_return, actual_return)
+ self.assertEqual('mutation', local_list[0])
+ self.assertEqual(expected_return, actual_return)
def testWithReturningSideEffectsWithAndReturn(self):
"""Should call state modifier and ignore its return value."""
@@ -520,8 +522,8 @@ class MockMethodTest(unittest.TestCase):
self.expected_method.WithSideEffects(modifier_with_return).AndReturn(
expected_return)
actual_return = self.mock_method(local_list)
- self.assertEquals('mutation', local_list[0])
- self.assertEquals(expected_return, actual_return)
+ self.assertEqual('mutation', local_list[0])
+ self.assertEqual(expected_return, actual_return)
def testEqualityNoParamsEqual(self):
"""Methods with the same name and without params should be equal."""
@@ -531,7 +533,7 @@ class MockMethodTest(unittest.TestCase):
def testEqualityNoParamsNotEqual(self):
"""Methods with different names and without params should not be equal."""
expected_method = mox.MockMethod("otherMethod", [], False)
- self.failIfEqual(self.mock_method, expected_method)
+ self.assertNotEqual(self.mock_method, expected_method)
def testEqualityParamsEqual(self):
"""Methods with the same name and parameters should be equal."""
@@ -548,7 +550,7 @@ class MockMethodTest(unittest.TestCase):
expected_method._params = [1, 2, 3]
self.mock_method._params = ['a', 'b', 'c']
- self.failIfEqual(self.mock_method, expected_method)
+ self.assertNotEqual(self.mock_method, expected_method)
def testEqualityNamedParamsEqual(self):
"""Methods with the same name and same named params should be equal."""
@@ -565,11 +567,11 @@ class MockMethodTest(unittest.TestCase):
expected_method._named_params = {"input1": "test", "input2": "params"}
self.mock_method._named_params = {"input1": "test2", "input2": "params2"}
- self.failIfEqual(self.mock_method, expected_method)
+ self.assertNotEqual(self.mock_method, expected_method)
def testEqualityWrongType(self):
"""Method should not be equal to an object of a different type."""
- self.failIfEqual(self.mock_method, "string?")
+ self.assertNotEqual(self.mock_method, "string?")
def testObjectEquality(self):
"""Equality of objects should work without a Comparator"""
@@ -629,12 +631,12 @@ class MockAnythingTest(unittest.TestCase):
self.mock_object._Replay()
actual = str(self.mock_object)
self.mock_object._Verify();
- self.assertEquals("foo", actual)
+ self.assertEqual("foo", actual)
def testSetupMode(self):
"""Verify the mock will accept any call."""
self.mock_object.NonsenseCall()
- self.assert_(len(self.mock_object._expected_calls_queue) == 1)
+ self.assertTrue(len(self.mock_object._expected_calls_queue) == 1)
def testReplayWithExpectedCall(self):
"""Verify the mock replays method calls as expected."""
@@ -668,7 +670,7 @@ class MockAnythingTest(unittest.TestCase):
self.mock_object[1].AndReturn(True)
self.mock_object._Replay()
returned_val = self.mock_object[1]
- self.assert_(returned_val)
+ self.assertTrue(returned_val)
self.mock_object._Verify()
def testNonzero(self):
@@ -689,18 +691,18 @@ class MockAnythingTest(unittest.TestCase):
def testEquals(self):
"""A mock should be able to compare itself to another object."""
self.mock_object._Replay()
- self.assertEquals(self.mock_object, self.mock_object)
+ self.assertEqual(self.mock_object, self.mock_object)
def testEqualsMockFailure(self):
"""Verify equals identifies unequal objects."""
self.mock_object.SillyCall()
self.mock_object._Replay()
- self.assertNotEquals(self.mock_object, mox.MockAnything())
+ self.assertNotEqual(self.mock_object, mox.MockAnything())
def testEqualsInstanceFailure(self):
"""Verify equals identifies that objects are different instances."""
self.mock_object._Replay()
- self.assertNotEquals(self.mock_object, TestClass())
+ self.assertNotEqual(self.mock_object, TestClass())
def testNotEquals(self):
"""Verify not equals works."""
@@ -735,21 +737,37 @@ class MockAnythingTest(unittest.TestCase):
self.mock_object().AndReturn('mox0rd')
self.mock_object._Replay()
- self.assertEquals('mox0rd', self.mock_object())
+ self.assertEqual('mox0rd', self.mock_object())
self.mock_object._Verify()
def testIsReprable(self):
"""Test that MockAnythings can be repr'd without causing a failure."""
- self.failUnless('MockAnything' in repr(self.mock_object))
+ self.assertTrue('MockAnything' in repr(self.mock_object))
class MethodCheckerTest(unittest.TestCase):
"""Tests MockMethod's use of MethodChecker method."""
- def testNoParameters(self):
+ def testUnboundMethodsRequiresInstance(self):
+ # SKIP TEST IN PYTHON 2.x (Ugly hack for python 2.6)
+ # REASON: semantics for unbound methods has changed only in Python 3
+ # so this test in earlier versions is invald
+ if sys.version_info < (3, 0):
+ return
+
+ instance = CheckCallTestClass()
method = mox.MockMethod('NoParameters', [], False,
CheckCallTestClass.NoParameters)
+
+ self.assertRaises(AttributeError, method)
+ method(instance)
+ self.assertRaises(AttributeError, method, instance, 1)
+
+ def testNoParameters(self):
+ method = mox.MockMethod('NoParameters', [], False,
+ CheckCallTestClass.NoParameters,
+ class_to_bind=CheckCallTestClass)
method()
self.assertRaises(AttributeError, method, 1)
self.assertRaises(AttributeError, method, 1, 2)
@@ -758,7 +776,8 @@ class MethodCheckerTest(unittest.TestCase):
def testOneParameter(self):
method = mox.MockMethod('OneParameter', [], False,
- CheckCallTestClass.OneParameter)
+ CheckCallTestClass.OneParameter,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
method(1)
method(a=1)
@@ -769,7 +788,8 @@ class MethodCheckerTest(unittest.TestCase):
def testTwoParameters(self):
method = mox.MockMethod('TwoParameters', [], False,
- CheckCallTestClass.TwoParameters)
+ CheckCallTestClass.TwoParameters,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
self.assertRaises(AttributeError, method, 1)
self.assertRaises(AttributeError, method, a=1)
@@ -786,7 +806,8 @@ class MethodCheckerTest(unittest.TestCase):
def testOneDefaultValue(self):
method = mox.MockMethod('OneDefaultValue', [], False,
- CheckCallTestClass.OneDefaultValue)
+ CheckCallTestClass.OneDefaultValue,
+ class_to_bind=CheckCallTestClass)
method()
method(1)
method(a=1)
@@ -797,7 +818,8 @@ class MethodCheckerTest(unittest.TestCase):
def testTwoDefaultValues(self):
method = mox.MockMethod('TwoDefaultValues', [], False,
- CheckCallTestClass.TwoDefaultValues)
+ CheckCallTestClass.TwoDefaultValues,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
self.assertRaises(AttributeError, method, c=3)
self.assertRaises(AttributeError, method, 1)
@@ -816,7 +838,8 @@ class MethodCheckerTest(unittest.TestCase):
self.assertRaises(AttributeError, method, a=1, b=2, e=9)
def testArgs(self):
- method = mox.MockMethod('Args', [], False, CheckCallTestClass.Args)
+ method = mox.MockMethod('Args', [], False, CheckCallTestClass.Args,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
self.assertRaises(AttributeError, method, 1)
method(1, 2)
@@ -827,7 +850,8 @@ class MethodCheckerTest(unittest.TestCase):
self.assertRaises(AttributeError, method, 1, 2, c=3)
def testKwargs(self):
- method = mox.MockMethod('Kwargs', [], False, CheckCallTestClass.Kwargs)
+ method = mox.MockMethod('Kwargs', [], False, CheckCallTestClass.Kwargs,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
method(1)
method(1, 2)
@@ -843,7 +867,8 @@ class MethodCheckerTest(unittest.TestCase):
def testArgsAndKwargs(self):
method = mox.MockMethod('ArgsAndKwargs', [], False,
- CheckCallTestClass.ArgsAndKwargs)
+ CheckCallTestClass.ArgsAndKwargs,
+ class_to_bind=CheckCallTestClass)
self.assertRaises(AttributeError, method)
method(1)
method(1, 2)
@@ -891,7 +916,7 @@ class MockObjectTest(unittest.TestCase):
def testSetupModeWithValidCall(self):
"""Verify the mock object properly mocks a basic method call."""
self.mock_object.ValidCall()
- self.assert_(len(self.mock_object._expected_calls_queue) == 1)
+ self.assertTrue(len(self.mock_object._expected_calls_queue) == 1)
def testSetupModeWithInvalidCall(self):
"""UnknownMethodCallError should be raised if a non-member method is called.
@@ -923,47 +948,47 @@ class MockObjectTest(unittest.TestCase):
def testIsInstance(self):
"""Mock should be able to pass as an instance of the mocked class."""
- self.assert_(isinstance(self.mock_object, TestClass))
+ self.assertTrue(isinstance(self.mock_object, TestClass))
def testFindValidMethods(self):
"""Mock should be able to mock all public methods."""
- self.assert_('ValidCall' in self.mock_object._known_methods)
- self.assert_('OtherValidCall' in self.mock_object._known_methods)
- self.assert_('MyClassMethod' in self.mock_object._known_methods)
- self.assert_('MyStaticMethod' in self.mock_object._known_methods)
- self.assert_('_ProtectedCall' in self.mock_object._known_methods)
- self.assert_('__PrivateCall' not in self.mock_object._known_methods)
- self.assert_('_TestClass__PrivateCall' in self.mock_object._known_methods)
+ self.assertTrue('ValidCall' in self.mock_object._known_methods)
+ self.assertTrue('OtherValidCall' in self.mock_object._known_methods)
+ self.assertTrue('MyClassMethod' in self.mock_object._known_methods)
+ self.assertTrue('MyStaticMethod' in self.mock_object._known_methods)
+ self.assertTrue('_ProtectedCall' in self.mock_object._known_methods)
+ self.assertTrue('__PrivateCall' not in self.mock_object._known_methods)
+ self.assertTrue('_TestClass__PrivateCall' in self.mock_object._known_methods)
def testFindsSuperclassMethods(self):
"""Mock should be able to mock superclasses methods."""
self.mock_object = mox.MockObject(ChildClass)
- self.assert_('ValidCall' in self.mock_object._known_methods)
- self.assert_('OtherValidCall' in self.mock_object._known_methods)
- self.assert_('MyClassMethod' in self.mock_object._known_methods)
- self.assert_('ChildValidCall' in self.mock_object._known_methods)
+ self.assertTrue('ValidCall' in self.mock_object._known_methods)
+ self.assertTrue('OtherValidCall' in self.mock_object._known_methods)
+ self.assertTrue('MyClassMethod' in self.mock_object._known_methods)
+ self.assertTrue('ChildValidCall' in self.mock_object._known_methods)
def testAccessClassVariables(self):
"""Class variables should be accessible through the mock."""
- self.assert_('SOME_CLASS_VAR' in self.mock_object._known_vars)
- self.assert_('_PROTECTED_CLASS_VAR' in self.mock_object._known_vars)
- self.assertEquals('test_value', self.mock_object.SOME_CLASS_VAR)
+ self.assertTrue('SOME_CLASS_VAR' in self.mock_object._known_vars)
+ self.assertTrue('_PROTECTED_CLASS_VAR' in self.mock_object._known_vars)
+ self.assertEqual('test_value', self.mock_object.SOME_CLASS_VAR)
def testEquals(self):
"""A mock should be able to compare itself to another object."""
self.mock_object._Replay()
- self.assertEquals(self.mock_object, self.mock_object)
+ self.assertEqual(self.mock_object, self.mock_object)
def testEqualsMockFailure(self):
"""Verify equals identifies unequal objects."""
self.mock_object.ValidCall()
self.mock_object._Replay()
- self.assertNotEquals(self.mock_object, mox.MockObject(TestClass))
+ self.assertNotEqual(self.mock_object, mox.MockObject(TestClass))
def testEqualsInstanceFailure(self):
"""Verify equals identifies that objects are different instances."""
self.mock_object._Replay()
- self.assertNotEquals(self.mock_object, TestClass())
+ self.assertNotEqual(self.mock_object, TestClass())
def testNotEquals(self):
"""Verify not equals works."""
@@ -1115,7 +1140,7 @@ class MockObjectTest(unittest.TestCase):
dummy[1].AndReturn('3')
dummy._Replay()
- self.assertEquals('3', dummy.__getitem__(1))
+ self.assertEqual('3', dummy.__getitem__(1))
dummy._Verify()
def testMockIter_ExpectedIter_Success(self):
@@ -1142,7 +1167,7 @@ class MockObjectTest(unittest.TestCase):
dummy._Replay()
- self.failUnless('X' in dummy)
+ self.assertTrue('X' in dummy)
dummy._Verify()
@@ -1205,7 +1230,7 @@ class MockObjectTest(unittest.TestCase):
dummy[2].AndRaise(IndexError)
dummy._Replay()
- self.assertEquals(['a', 'b'], [x for x in dummy])
+ self.assertEqual(['a', 'b'], [x for x in dummy])
dummy._Verify()
def testMockIter_ExpectedNoGetItem_NoSuccess(self):
@@ -1228,12 +1253,12 @@ class MockObjectTest(unittest.TestCase):
dummy = mox.MockObject(TestSubClass)
iter(dummy).AndReturn(iter(['a', 'b']))
dummy._Replay()
- self.assertEquals(['a', 'b'], [x for x in dummy])
+ self.assertEqual(['a', 'b'], [x for x in dummy])
dummy._Verify()
def testInstantiationWithAdditionalAttributes(self):
mock_object = mox.MockObject(TestClass, attrs={"attr1": "value"})
- self.assertEquals(mock_object.attr1, "value")
+ self.assertEqual(mock_object.attr1, "value")
def testCantOverrideMethodsWithAttributes(self):
self.assertRaises(ValueError, mox.MockObject, TestClass,
@@ -1281,7 +1306,7 @@ class MoxTest(unittest.TestCase):
self.mox.ReplayAll()
ret_val = mock_obj.ValidCall()
- self.assertEquals("yes", ret_val)
+ self.assertEqual("yes", ret_val)
self.mox.VerifyAll()
def testSignatureMatchingWithComparatorAsFirstArg(self):
@@ -1312,7 +1337,7 @@ class MoxTest(unittest.TestCase):
self.mox.ReplayAll()
ret_val = mock_obj("foo")
- self.assertEquals("qux", ret_val)
+ self.assertEqual("qux", ret_val)
self.mox.VerifyAll()
def testInheritedCallableObject(self):
@@ -1322,7 +1347,7 @@ class MoxTest(unittest.TestCase):
self.mox.ReplayAll()
ret_val = mock_obj("foo")
- self.assertEquals("qux", ret_val)
+ self.assertEqual("qux", ret_val)
self.mox.VerifyAll()
def testCallOnNonCallableObject(self):
@@ -1413,8 +1438,8 @@ class MoxTest(unittest.TestCase):
actual_one = mock_obj.Method(1)
mock_obj.Close()
- self.assertEquals(9, actual_one)
- self.assertEquals(10, actual_two)
+ self.assertEqual(9, actual_one)
+ self.assertEqual(10, actual_two)
self.mox.VerifyAll()
@@ -1459,10 +1484,10 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
- self.assertEquals(9, actual_one)
- self.assertEquals(9, second_one) # Repeated calls should return same number.
- self.assertEquals(10, actual_two)
- self.assertEquals(42, actual_three)
+ self.assertEqual(9, actual_one)
+ self.assertEqual(9, second_one) # Repeated calls should return same number.
+ self.assertEqual(10, actual_two)
+ self.assertEqual(42, actual_three)
def testMultipleTimesUsingIsAParameter(self):
"""Test if MultipleTimesGroup works with a IsA parameter."""
@@ -1479,8 +1504,8 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
- self.assertEquals(9, actual_one)
- self.assertEquals(9, second_one) # Repeated calls should return same number.
+ self.assertEqual(9, actual_one)
+ self.assertEqual(9, second_one) # Repeated calls should return same number.
def testMutlipleTimesUsingFunc(self):
"""Test that the Func is not evaluated more times than necessary.
@@ -1509,7 +1534,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
- self.assertEquals(2, self.counter)
+ self.assertEqual(2, self.counter)
def testMultipleTimesThreeMethods(self):
"""Test if MultipleTimesGroup works with three or more methods."""
@@ -1531,10 +1556,10 @@ class MoxTest(unittest.TestCase):
actual_four = mock_obj.Method(4)
mock_obj.Close()
- self.assertEquals(9, actual_one)
- self.assertEquals(8, actual_two)
- self.assertEquals(7, actual_three)
- self.assertEquals(10, actual_four)
+ self.assertEqual(9, actual_one)
+ self.assertEqual(8, actual_two)
+ self.assertEqual(7, actual_three)
+ self.assertEqual(10, actual_four)
self.mox.VerifyAll()
@@ -1576,8 +1601,8 @@ class MoxTest(unittest.TestCase):
mock_obj.Method(3)
mock_obj.Close()
- self.assertEquals(9, actual_one)
- self.assertEquals(42, actual_three)
+ self.assertEqual(9, actual_one)
+ self.assertEqual(42, actual_three)
self.mox.VerifyAll()
@@ -1625,7 +1650,7 @@ class MoxTest(unittest.TestCase):
self.mox.ReplayAll()
local_list = ['original']
- self.failUnlessRaises(Exception,
+ self.assertRaises(Exception,
mock_obj.ConfigureInOutParameter,
local_list)
mock_obj.WorkWithParameter(local_list)
@@ -1648,7 +1673,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('foo', actual)
+ self.assertEqual('foo', actual)
self.assertTrue(type(test_obj.OtherValidCall) is method_type)
def testStubOutMethod_Unbound_Comparator(self):
@@ -1662,7 +1687,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('foo', actual)
+ self.assertEqual('foo', actual)
def testStubOutMethod_Unbound_Subclass_Comparator(self):
self.mox.StubOutWithMock(mox_test_helper.TestClassFromAnotherModule, 'Value')
@@ -1675,7 +1700,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('foo', actual)
+ self.assertEqual('foo', actual)
def testStubOuMethod_Unbound_WithOptionalParams(self):
self.mox = mox.Mox()
@@ -1700,7 +1725,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('foo', actual)
+ self.assertEqual('foo', actual)
def testStubOutMethod_Unbound_DifferentInstance(self):
instance = TestClass()
@@ -1761,7 +1786,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('foo', actual)
+ self.assertEqual('foo', actual)
def testStubOutMethod_Bound_NamedUsingPositional(self):
"""Check positional parameters can be matched to keyword arguments."""
@@ -1840,7 +1865,7 @@ class MoxTest(unittest.TestCase):
def testStubOutClass_OldStyle(self):
"""Test a mocked class whose __init__ returns a Mock."""
self.mox.StubOutWithMock(mox_test_helper, 'TestClassFromAnotherModule')
- self.assert_(isinstance(mox_test_helper.TestClassFromAnotherModule,
+ self.assertTrue(isinstance(mox_test_helper.TestClassFromAnotherModule,
mox.MockObject))
mock_instance = self.mox.CreateMock(
@@ -1855,7 +1880,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.assertEquals('mock instance', actual)
+ self.assertEqual('mock instance', actual)
def testStubOutClass(self):
self.mox.StubOutClassWithMocks(mox_test_helper, 'CallableClass')
@@ -1880,12 +1905,12 @@ class MoxTest(unittest.TestCase):
self.mox.UnsetStubs()
# Verify the correct mocks were returned
- self.assertEquals(mock_one, one)
- self.assertEquals(mock_two, two)
+ self.assertEqual(mock_one, one)
+ self.assertEqual(mock_two, two)
# Verify
- self.assertEquals('mock', actual_one)
- self.assertEquals('called mock', actual_two)
+ self.assertEqual('mock', actual_one)
+ self.assertEqual('called mock', actual_two)
def testStubOutClass_NotAClass(self):
self.assertRaises(TypeError, self.mox.StubOutClassWithMocks,
@@ -1979,7 +2004,7 @@ class MoxTest(unittest.TestCase):
foo = Foo()
self.mox.StubOutWithMock(foo, "obj")
- self.assert_(isinstance(foo.obj, mox.MockObject))
+ self.assertTrue(isinstance(foo.obj, mox.MockObject))
foo.obj.ValidCall()
self.mox.ReplayAll()
@@ -1987,7 +2012,7 @@ class MoxTest(unittest.TestCase):
self.mox.VerifyAll()
self.mox.UnsetStubs()
- self.failIf(isinstance(foo.obj, mox.MockObject))
+ self.assertFalse(isinstance(foo.obj, mox.MockObject))
def testForgotReplayHelpfulMessage(self):
"""If there is an AttributeError on a MockMethod, give users a helpful msg.
@@ -2000,7 +2025,7 @@ class MoxTest(unittest.TestCase):
try:
foo.GetBar().ShowMeTheMoney()
except AttributeError as e:
- self.assertEquals('MockMethod has no attribute "ShowMeTheMoney". '
+ self.assertEqual('MockMethod has no attribute "ShowMeTheMoney". '
'Did you remember to put your mocks in replay mode?', str(e))
@@ -2101,14 +2126,14 @@ class MoxTestBaseTest(unittest.TestCase):
self.test_stubs.SmartUnsetAll()
self.mox.ReplayAll()
self.test.run(result=self.result)
- self.failIf(self.result.wasSuccessful())
+ self.assertFalse(self.result.wasSuccessful())
self.mox.VerifyAll()
def testExpectedNotCalledNoMocks(self):
"""Let testExpectedNotCalled() unset all the mocks by itself."""
self._CreateTest('testExpectedNotCalled')
self.test.run(result=self.result)
- self.failIf(self.result.wasSuccessful())
+ self.assertFalse(self.result.wasSuccessful())
self.assertEqual(OS_LISTDIR, mox_test_helper.os.listdir)
def testUnexpectedCall(self):
@@ -2124,7 +2149,7 @@ class MoxTestBaseTest(unittest.TestCase):
self.test_stubs.SmartUnsetAll()
self.mox.ReplayAll()
self.test.run(result=self.result)
- self.failIf(self.result.wasSuccessful())
+ self.assertFalse(self.result.wasSuccessful())
self.mox.VerifyAll()
def testFailure(self):
@@ -2140,7 +2165,7 @@ class MoxTestBaseTest(unittest.TestCase):
self.test_stubs.SmartUnsetAll()
self.mox.ReplayAll()
self.test.run(result=self.result)
- self.failIf(self.result.wasSuccessful())
+ self.assertFalse(self.result.wasSuccessful())
self.mox.VerifyAll()
def testMixin(self):
@@ -2182,11 +2207,11 @@ class ResetTest(unittest.TestCase):
self.assertFalse(mock_obj._replay_mode)
mock_obj._Replay()
self.assertTrue(mock_obj._replay_mode)
- self.assertEquals(1, len(mock_obj._expected_calls_queue))
+ self.assertEqual(1, len(mock_obj._expected_calls_queue))
mox.Reset(mock_obj)
self.assertFalse(mock_obj._replay_mode)
- self.assertEquals(0, len(mock_obj._expected_calls_queue))
+ self.assertEqual(0, len(mock_obj._expected_calls_queue))
class MyTestCase(unittest.TestCase):
@@ -2199,7 +2224,7 @@ class MyTestCase(unittest.TestCase):
def testMethodOverride(self):
"""Should be properly overriden in a derived class."""
- self.assertEquals(42, self.another_critical_variable)
+ self.assertEqual(42, self.another_critical_variable)
self.another_critical_variable += 1
@@ -2212,15 +2237,15 @@ class MoxTestBaseMultipleInheritanceTest(mox.MoxTestBase, MyTestCase):
def testMultipleInheritance(self):
"""Should be able to access members created by all parent setUp()."""
- self.assert_(isinstance(self.mox, mox.Mox))
- self.assertEquals(42, self.critical_variable)
+ self.assertTrue(isinstance(self.mox, mox.Mox))
+ self.assertEqual(42, self.critical_variable)
def testMethodOverride(self):
"""Should run before MyTestCase.testMethodOverride."""
- self.assertEquals(99, self.another_critical_variable)
+ self.assertEqual(99, self.another_critical_variable)
self.another_critical_variable = 42
super(MoxTestBaseMultipleInheritanceTest, self).testMethodOverride()
- self.assertEquals(43, self.another_critical_variable)
+ self.assertEqual(43, self.another_critical_variable)
class MoxTestDontMockProperties(MoxTestBaseTest):
def testPropertiesArentMocked(self):