Se moquant de assert_called_with en Python

J'ai un peu de mal à comprendre pourquoi le code suivant ne passe pas:

test.py

import mock
import unittest

from foo import Foo


class TestFoo(unittest.TestCase):
    @mock.patch('foo.Bar')
    def test_foo_add(self, Bar):
        foo = Foo()
        foo.add(2, 2)
        Bar.add.assert_called_with(2, 2)


if __name__ == '__main__':
    unittest.main()

foo.py

from bar import Bar

class Foo(object):
    def add(self, x, y):
        bar = Bar()
        return bar.add(x, y)

bar.py

class Bar(object):
    def add(self, x, y):
        print('b.Bar --> Adding {} + {}'.format(x, y))
        return x + y

Dans le code, Foo.add crée une instance de Bar et retourne le résultat de Bar.add lorsqu'ils sont invoqués. Pourquoi n'essais assert_called_with pour Bar.add échec? Je crois que je suis se moquer de la Bar au bon endroit (je suis moqueur foo.Bar parce que c'est l'espace de noms dont il est à l'étude, plutôt que de bar.Bar).

Traceback (most recent call last):
Le fichier "/Users/iain/PycharmProjects/testing/venv/lib/python2.7/site-packages/mock.py", ligne 1201, dans patché
retour func(*args, **keywargs)
Fichier "test.py", ligne 12, dans test_a_b
fake_Bar.ajouter.assert_called_with(2, 2)
Le fichier "/Users/iain/PycharmProjects/testing/venv/lib/python2.7/site-packages/mock.py" de ligne, 831, dans assert_called_with
soulever AssertionError (on Attend d'appel: %s\n appelé' % (attendus,))
AssertionError: visite Attendue: add(2, 2)
Pas appelé

OriginalL'auteur Iain | 2015-06-08