如何使用Python在单元测试中对对象进行补丁处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1347个文字,预计阅读时间需要6分钟。
问题:在你的单元测试中,需要给特定的对象打补丁,用来模拟其在测试中的行为。例如,用断言它们在测试中的期望行为(比如,断言被调用的次数、参数等)。
解决方案:使用`unittest.mock.patch()`函数来实现。
pythonfrom unittest.mock import patch
假设有一个对象obj,我们需要在测试中模拟它的行为class SomeClass: def method(self, arg): pass
obj=SomeClass()
在测试中使用patch来模拟obj.method的行为with patch.object(obj, 'method') as mock_method: # 设置mock_method的回调和期望值 mock_method.return_value=mocked result mock_method.assert_called_once_with(expected arg)
# 调用obj.method,此时会调用mock_method result=obj.method(expected arg) assert result==mocked result
问题
你写的单元测试中需要给指定的对象打补丁, 用来断言它们在测试中的期望行为(比如,断言被调用时的参数个数,访问指定的属性等)。
解决方案
unittest.mock.patch() 函数可被用来解决这个问题。 patch() 还可被用作一个装饰器、上下文管理器或单独使用,尽管并不常见。
本文共计1347个文字,预计阅读时间需要6分钟。
问题:在你的单元测试中,需要给特定的对象打补丁,用来模拟其在测试中的行为。例如,用断言它们在测试中的期望行为(比如,断言被调用的次数、参数等)。
解决方案:使用`unittest.mock.patch()`函数来实现。
pythonfrom unittest.mock import patch
假设有一个对象obj,我们需要在测试中模拟它的行为class SomeClass: def method(self, arg): pass
obj=SomeClass()
在测试中使用patch来模拟obj.method的行为with patch.object(obj, 'method') as mock_method: # 设置mock_method的回调和期望值 mock_method.return_value=mocked result mock_method.assert_called_once_with(expected arg)
# 调用obj.method,此时会调用mock_method result=obj.method(expected arg) assert result==mocked result
问题
你写的单元测试中需要给指定的对象打补丁, 用来断言它们在测试中的期望行为(比如,断言被调用时的参数个数,访问指定的属性等)。
解决方案
unittest.mock.patch() 函数可被用来解决这个问题。 patch() 还可被用作一个装饰器、上下文管理器或单独使用,尽管并不常见。

