def test_mock_add_spec_magic_methods(self): for Klass in (MagicMock, NonCallableMagicMock): mock = Klass() int(mock) mock.mock_add_spec(object) self.assertRaises(TypeError, int, mock) mock = Klass() mock['foo'] mock.__int__.return_value = 4 mock.mock_add_spec(int) self.assertEqual(int(mock), 4) self.assertRaises(TypeError, lambda : mock['foo'])
def test_mock_add_spec(self): class _One(object): one = 1 class _Two(object): two = 2 class Anything(object): one = two = three = 'four' klasses = [ Mock, MagicMock, NonCallableMock, NonCallableMagicMock ] for Klass in list(klasses): klasses.append(lambda K=Klass: K(spec=Anything)) klasses.append(lambda K=Klass: K(spec_set=Anything)) for Klass in klasses: for kwargs in dict(), dict(spec_set=True): mock = Klass() #no error mock.one, mock.two, mock.three for One, Two in [(_One, _Two), (['one'], ['two'])]: for kwargs in dict(), dict(spec_set=True): mock.mock_add_spec(One, **kwargs) mock.one self.assertRaises( AttributeError, getattr, mock, 'two' ) self.assertRaises( AttributeError, getattr, mock, 'three' ) if 'spec_set' in kwargs: self.assertRaises( AttributeError, setattr, mock, 'three', None ) mock.mock_add_spec(Two, **kwargs) self.assertRaises( AttributeError, getattr, mock, 'one' ) mock.two self.assertRaises( AttributeError, getattr, mock, 'three' ) if 'spec_set' in kwargs: self.assertRaises( AttributeError, setattr, mock, 'three', None )
def test_mock_add_spec(self): class _One(object): __qualname__ = 'MockTest.test_mock_add_spec.<locals>._One' one = 1 class _Two(object): __qualname__ = 'MockTest.test_mock_add_spec.<locals>._Two' two = 2 class Anything(object): __qualname__ = 'MockTest.test_mock_add_spec.<locals>.Anything' one = two = three = 'four' klasses = [Mock, MagicMock, NonCallableMock, NonCallableMagicMock] for Klass in list(klasses): klasses.append(lambda K=Klass: K(spec=Anything)) klasses.append(lambda K=Klass: K(spec_set=Anything)) for Klass in klasses: for kwargs in (dict(), dict(spec_set=True)): mock = Klass() (mock.one, mock.two, mock.three) for (One, Two) in [(_One, _Two), (['one'], ['two'])]: for kwargs in (dict(), dict(spec_set=True)): mock.mock_add_spec(One, **kwargs) mock.one self.assertRaises(AttributeError, getattr, mock, 'two') self.assertRaises(AttributeError, getattr, mock, 'three') if 'spec_set' in kwargs: self.assertRaises(AttributeError, setattr, mock, 'three', None) mock.mock_add_spec(Two, **kwargs) self.assertRaises(AttributeError, getattr, mock, 'one') mock.two self.assertRaises(AttributeError, getattr, mock, 'three') while 'spec_set' in kwargs: self.assertRaises(AttributeError, setattr, mock, 'three', None)