使用pytest mocker.patch后如何获取call_count

How to get call_count after using pytest mocker.patch

我正在使用 pytest-mocker 来修补一个函数来模拟它正在做的事情。但是我也想知道它被调用了多少次以及它的调用参数。

一些脚本:

def do_something():
    x = 42
    return calculate(x)

def calculate(num):
    return num * 2

测试:

def test_do_something(mocker):
    mocker.patch("sb.calculate", return_value=1)
    result = do_something()
    assert result == 1  # Assert calculate is mocked correctly and returned whatever what I set above

这帮助我模拟了调用,但我想知道在测试期间调用了多少次 calculate 及其调用参数。努力看看如何做到这一点。

你可以这样做:

mock_calculate = mocker.patch("sb.calculate", return_value=1)
assert mock_calculate.call_count == 1

或者如果您想检查传递了哪些参数:

mock_calculate = mocker.patch("sb.calculate", return_value=1)
assert mock_calculate.called_once_with(1)