使用unittest设置从另一个模拟对象创建的模拟对象的返回值可以通过以下步骤实现:
mock
模块创建模拟对象。可以使用Mock()
函数创建一个模拟对象,例如:mock_obj = Mock()
。mock_obj
的return_value
属性来设置模拟对象的返回值。可以使用return_value
属性的side_effect
参数来指定返回值,例如:mock_obj.return_value = 10
。mock_obj
作为返回值创建另一个模拟对象。可以使用Mock()
函数的return_value
参数来指定返回值为前面创建的模拟对象,例如:another_mock_obj = Mock(return_value=mock_obj)
。完整的代码示例如下:
import unittest
from unittest.mock import Mock
class MyTestCase(unittest.TestCase):
def test_mock_return_value(self):
# 创建模拟对象
mock_obj = Mock()
# 设置模拟对象的返回值
mock_obj.return_value = 10
# 创建另一个模拟对象并使用前面创建的模拟对象作为返回值
another_mock_obj = Mock(return_value=mock_obj)
# 断言返回值是否符合预期
self.assertEqual(another_mock_obj(), mock_obj)
self.assertEqual(another_mock_obj().return_value, 10)
if __name__ == '__main__':
unittest.main()
在上述代码中,我们使用Mock()
函数创建了两个模拟对象mock_obj
和another_mock_obj
,并设置了mock_obj
的返回值为10。然后,我们使用mock_obj
作为返回值创建了another_mock_obj
。最后,我们使用assertEqual()
方法断言another_mock_obj()
的返回值是否等于mock_obj
,以及another_mock_obj().return_value
是否等于10。
这样,我们就成功设置了从另一个模拟对象创建的模拟对象的返回值。
领取专属 10元无门槛券
手把手带您无忧上云