pytest:Mock返回具有特定属性的Mock

2024-09-28 03:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现我经常在测试中反复使用相同的模式:

mock_get_data = mock.MagicMock()
mock_get_data.get_data.return_value = "mocked DB data"
mock_db = mock.Mock(spec=DBClass, return_value=mock_get_data)

它将用于测试(通过修补)这类代码:

^{pr2}$

有没有办法让“双重模拟”的东西变短?在


Tags: 代码dbdatagetreturnvalue模式mock
2条回答

您应该能够通过将字典传递给构造函数来实现这一点,如文档的configure mock部分所述,而不是在MagicMock创建之后配置它。在

我相信以下几点可以达到预期的效果:

mock_db = mock.Mock(spec=DBClass, return_value=mock.MagicMock(**{"get_data.return_value": "mocked DB data"})

你可以这样做:

mock_db = mock.Mock(spec=DBClass, return_value=mock.Mock(get_data=lambda:"mocked DB data"))

相关问题 更多 >

    热门问题