封装模拟

  

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;)> <李>

    然后在测试用例中接受一个参数,这个参数是模仿哪个函数,就在函数名前加一个模拟,例如给data_parse函数模拟数据,这个参数名就是<代码> mock_data_parse> <李>

    有了这个参数之后就可以给模拟的函数的return_value赋值了。最后就可以进行断言,运行测试了;

    封装模拟