Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取单元测试期间调用的方法的值_Python_Python 3.x_Pytest_Pytest Mock - Fatal编程技术网

Python 获取单元测试期间调用的方法的值

Python 获取单元测试期间调用的方法的值,python,python-3.x,pytest,pytest-mock,Python,Python 3.x,Pytest,Pytest Mock,我正在使用pytest\u 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

我正在使用
pytest\u 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

也许是这样的:

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)
如果您为模拟对象指定一个值,在本例中为变量
mocked\u doB
,您将得到一个
MagicMock
对象。使用这个MagicMock对象,您可以从
unittest.mock
mock类访问所有类型的方法,例如

  • assert_用()调用了一次
  • 打电话给伯爵
  • 还有更多
请看这里:

这是因为使用pytest mock框架,您可以从
mocker
直接访问
mock
模块。
这在这里的“用法”下有说明。

欢迎使用堆栈溢出!虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在您的答案中添加解释,并说明适用的限制和假设。@ББПаааПа我更新了上述答案。谢谢你的欢迎。