总结
1.patch装饰器的概念
- patch装饰器是mock第二种实现数据模拟的方式,patch()充当函数装饰器,类装饰器或上下文管理器,可用于处理测试范围内的修补模块和类级属性;
2.patch装饰器语法
-
语法:
unittest.mock.patch(target,new = DEFAULT,spec = None,create = False,spec_set = None,autospec = None,new_callable = None,** kwarg )
; -
参数target 为'package.module.classname'格式的字符串,如果参数new被省略,那么target 被MagicMock代替;
-
如果patch()用作装饰器并且省略new,则创建的mock将作为额外参数传递给装饰函数,如果patch()用作上下文管理器,则上下文管理器返回创建的mock;
-
New_Callable参数允许指定将被调用以创建新对象的其他类或可调用对象,默认情况下,使用magicMock。
3.patch装饰器实现数据模拟
-
首先使用
@mock.patch()
装饰器来装饰你要使用的测试用例,@mock.patch()中需要带一个参数,指定需要mock的函数或者类,和这个类所在的包和模块,例如:@mock.patch(''function1.data_parse'')
,表示给一个在function1模块中的data_parse函数mock数据; -
然后在测试用例中接受一个参数,这个参数是mock哪个函数,就在函数名前加一个mock,例如给data_parse函数mock数据,这个参数名就是
mock_data_parse
; -
有了这个参数之后就可以给mock的函数的return_value赋值了; 最后就可以进行断言,运行测试了;