1

これが私のクラスです:

class GoogleCloudLayer:

    def deleteMachine(self, machineName):
        return machineName + ' is dead. (stubbed)'

できます:

>>> gc = GoogleCloudLayer()
>>> gc.deleteMachine('test')
test is dead (stubbed)

しかし、私はテストで使用したいので、assert_called_withメソッドを定義したいと思います:

from mock import MagicMock
#Stubbing with itself just so it will have the `assert_called_with` method defined on it
GoogleCloudLayer.deleteMachine = MagicMock(side_effect = GoogleCloudLayer.deleteMachine)

しかし、私は得る

>>> gc = GoogleCloudLayer()
>>> gc.deleteMachine('test')
unbound method deleteMachine() must be called with GoogleCloudLayer instance as first argument (got str instance instead)

プロダクションコードを変更するgc.deleteMachine(gc, 'test')と機能します。しかし、私たちはそれを望んでいませんよね?

4

1 に答える 1

1

lambdaこの状況で役立つ可能性があります。試してみてください:

GoogleCloudLayer.createMachine = MagicMock(side_effect = lambda *args, **kwargs: GoogleCloudLayer.createMachine)
于 2016-03-09T12:27:40.957 に答える