0

pytest_mock用来模拟函数调用。我想检查调用以doB()查看它是否使用值 3 调用。我将如何为此编写断言?

def testtest(mocker):
    # arrange
    mocker.patch.object(ClassA, 'doB', return_value=None)
    sut = ClassA()
    # act
    actual = sut.party(4) # will make a call to doB
    expected = 3
    # assert
4

1 回答 1

2

也许是这样的:

def testtest(mocker):
    # arrange
    mocked_doB = mocker.patch.object(ClassA, 'doB', return_value=None)
    sut = ClassA()
    # act
    actual = sut.party(4) # will make a call to doB
    expected = 3
    # assert
    mocked_doB.assert_called_once_with(expected)

如果您为模拟对象分配一个值,在本例中为 variable mocked_doB,您将获得一个MagicMock对象。使用这个 MagicMock 对象,您可以访问unittest.mockMock 类中的所有类型的方法,例如

  • assert_call_once_with()
  • call_count,
  • 还有很多...

见这里:https ://docs.python.org/3/library/unittest.mock.html#the-mock-class

这是有效的,因为使用 pytest-mock 框架,您可以直接mockmocker. 这在“用法”下进行了说明,https://pypi.org/project/pytest-mock/

于 2021-04-28T08:54:12.123 回答