2.补丁装饰器语法
- <李>
语法:<代码> unittest.mock。补丁(目标、新=违约,规范=None,创建=False, spec_set=None, autospec=None, new_callable=None, * * kwarg) 代码>,
李> <李>参数为目标"。名称“格式的字符串,如果参数新被省略,那么目标被MagicMock代替;
李> <李>如果补丁()用作装饰器并且省略,则创建的模拟将作为额外参数传递给装饰函数,如果补丁()用作上下文管理器,则上下文管理器返回创建的模拟;
李> <李>New_Callable参数允许指定将被调用以创建新对象的其他类或可调用对象,默认情况下,使用MagicMock。
李>那测试。py文件中的代码可以这样写:
<>之前从unittest进口模拟 从unittest进口TestCase 进口unittest 从进口DataParse function1 DataShow 类TestData (TestCase): #补丁装饰器 @mock.patch (& # 39; function1.DataParse& # 39;) def test_print1(自我,mock_DataParse): #先拿到类的模拟实例 dataParse=mock_DataParse.return_value #在通过类的模拟实例调用方法,对方法返回值进行模拟 dataParse.data_parse。return_value=https://www.yisu.com/zixun/{“结果”:“成功”,“原因”:“零”} #调用data_show .data_show雕像=DataShow () () 打印(雕像) 自我。assertEqual(雕像,“数据解析成功”) @mock.patch (“function1.DataParse”) def test_print2(自我,mock_DataParse): #先拿到类的模拟实例 dataParse=mock_DataParse.return_value #在通过类的模拟实例调用方法,对方法返回值进行模拟 dataParse.data_parse。return_value={“结果”:“失败”,“原因”:“数据错误”} #调用data_show .data_show雕像=DataShow () () 打印(雕像) 自我。assertEqual(雕像,“数据解析失败”) if __name__==癬_main__”: unittest.main ()=========输出=============数据解析成功 数据解析失败:数据错误 数据解析失败步骤
- <李>
首先使用@mock.patch()装饰器来装饰你要使用的测试用例,@mock.patch()中需要带一个参数,指定需要模拟的函数或者类,和这个类所在的包和模块,例如:<代码> @mock.patch (& # 39; & # 39; function1.data_parse& # 39; & # 39;)> 代码,表示给一个在function1模块中的data_parse函数模拟数据;
李> <李>然后在测试用例中接受一个参数,这个参数是模仿哪个函数,就在函数名前加一个模拟,例如给data_parse函数模拟数据,这个参数名就是<代码> mock_data_parse> 代码;
李> <李>有了这个参数之后就可以给模拟的函数的return_value赋值了。最后就可以进行断言,运行测试了;
李>