我正在编写单元测试。我想模拟在模拟对象上调用的函数的结果。
我有一个名为OwnerAnalyzer
的类,该类在其构造函数中接受一个名为client
的对象。使用此客户端,我可以获得owner
的详细信息。
在单元测试中,我想为此客户端传递一个模拟,并从其get_owners
方法模拟结果。
这是我到目前为止所拥有的:
def test_get_owner_details(mock_datetime, monkeypatch):
mock_datetime.now.return_value.isoformat.return_value = MOCK_NOW
mock_client = mock.MagicMock()
mock_client.return_value.get_owners.return_value = ListOwnerDetails(
main_owner=OwnerDetails(name='test_owner', type='User'), secondary_owners=[])
owner_analyzer = OwnerAnalyzer(OWNER_NAME, client=mock_client)
owner_analyzer.analyze_owner(OWNER_NAME)
assert classUnderTest.owner_name == 'test_owner'
我不认为get_owners
会返回模拟值,因为我得到了main_owner
的类似信息
owner is : <MagicMock name='mock.get_owners().main_owner' id='140420863948896'>
。
答案 0 :(得分:1)
感谢@jonrsharpe向我指出正确的方向。
我可以通过将模拟设置更新为-
mock_client.get_owners.return_value = ListOwnerDetails(
main_owner=OwnerDetails(name='test_owner', type='User'), secondary_owners=[])