我想验证Foo()
个呼叫Bar()
,但实际呼叫Bar()
.然后我想验证Bar()
返回的任何内容都分配给obj
.
我try 了以下操作:
class Bar:
def __init__(self, a):
print(a)
class Foo:
def __init__(self):
self.obj = Bar(1)
###
import pytest
from unittest.mock import Mock, patch
from mod import Foo, Bar
@pytest.fixture # With stdlib
def mock_bar():
with patch('mod.Bar') as mock:
yield mock
def test_foo(mock_bar):
result = Foo()
mock_bar.assert_called_once_with(1)
assert result.obj == mock_bar
但它会失败并说:
E AssertionError: assert <MagicMock na...='5265642864'> == <MagicMock na...='5265421696'>
E Full diff:
E - <MagicMock name='Bar' id='5265421696'>
E ? ^ ^^
E + <MagicMock name='Bar()' id='5265642864'>
E ? ++ + ^ ^