模拟对象功能的模拟返回值

时间:2019-08-13 06:29:38

标签: python

我正在编写单元测试。我想模拟在模拟对象上调用的函数的结果。

我有一个名为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'>

1 个答案:

答案 0 :(得分:1)

感谢@jonrsharpe向我指出正确的方向。

我可以通过将模拟设置更新为-

mock_client.get_owners.return_value = ListOwnerDetails(
        main_owner=OwnerDetails(name='test_owner', type='User'), secondary_owners=[])