Python 模拟对象的函数的模拟返回值
我正在编写单元测试。我想模拟对模拟对象调用的函数的结果 我有一个名为Python 模拟对象的函数的模拟返回值,python,Python,我正在编写单元测试。我想模拟对模拟对象调用的函数的结果 我有一个名为OwnerAnalyzer的类,它在构造函数中接受一个名为client的对象。使用此客户端,我可以获取所有者详细信息 在我的单元测试中,我希望通过此客户端的模拟,并通过其get\u owners方法获得模拟结果 以下是我到目前为止的情况: def test_get_owner_details(mock_datetime, monkeypatch): mock_datetime.now.return_value.isofo
OwnerAnalyzer
的类,它在构造函数中接受一个名为client
的对象。使用此客户端,我可以获取所有者
详细信息
在我的单元测试中,我希望通过此客户端的模拟,并通过其get\u 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\u owner
调用中没有返回模拟值,因为我得到了类似于main\u owner
所有者是:
感谢@jornsharpe为我指明了正确的方向
通过将模拟设置更新为-
mock_client.get_owners.return_value = ListOwnerDetails(
main_owner=OwnerDetails(name='test_owner', type='User'), secondary_owners=[])
您正在设置
mock().get_owners()
,而不是mock.get_owners()
。抱歉,我没有听清楚。请查看您实际获得的mock的表示形式。将其与您设置的模拟进行比较。您希望OwnerAnalyzer调用客户端吗?OwnerAnalyzer中的方法analyze\u owner
调用client。使用OwnerAnalyzer的self.client
获取所有者。这就是我想嘲笑的电话。对不起,我是Python新手,我通常用Java编写代码。是的,但您正在对client()
的返回值设置模拟。再一次,看看输出告诉您什么,并思考被测代码将如何与您的测试加倍进行交互。