使用Mock python断言调用方法

Gau*_*ood 5 python mocking

我正在尝试使用Python中的模拟库进行一些单元测试.我有以下代码:

def a():
    print 'a'

def b():
    print 'b'
    if some condition
        a()
Run Code Online (Sandbox Code Playgroud)

如何b在进行模拟调用时声明已经进行了调用b?我尝试了以下代码,但失败了:

mymock=Mock()
mymock.b()
assertTrue(a.__call__ in mymock.mock_calls)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我认为这mymock.b()与方法无关b().可以做些什么呢?

Sio*_*e21 7

如果你修补a,你可以确保它被调用如下:

with mock.patch('__main__.a') as fake_a:
    b()
    fake_a.assert_called_with()
Run Code Online (Sandbox Code Playgroud)

如果您的方法位于不同的模块中:

import mymodule

with mock.patch('mymodule.a') as fake_a:
    mymodule.b()
    fake_a.assert_called_with()
Run Code Online (Sandbox Code Playgroud)