封装mock

发布时间:2020-08-05 09:46:13 作者:Winter
来源:ITPUB博客 阅读:176

1.patch装饰器的概念

2.patch装饰器语法

3.patch装饰器实现数据模拟

修改Test.py文件中的TestData类,在测试用例前加上一个 @mock .patch()装饰器

from unittest import mock
from unittest import TestCase
import unittest
import function1
class TestData(TestCase):
    # patch装饰器
    @mock.patch('function1.data_parse')
    def test_print1(self, mock_data_parse):
        mock_data_parse.return_value = {"result": "success", "reason":"null"}
        statues = function1.data_show()
        print(statues)
        self.assertEqual(statues, "data parse success")
    @mock.patch('function1.data_parse')
    def test_print2(self, data_parse):
        data_parse.return_value = {"result": "fail", "reason": "Data Error"}
        statues = function1.data_show()
        self.assertEqual(statues, "data parse failed")
if __name__ == "__main__":
    unittest.main()

我们这里模拟的是函数中的数据,如果需要mock的数据是一个类中方法的数据,写法也是一样的,比如function1.py模块中的代码是:

class DataParse:
    def data_parse(self):
        pass
class DataShow:
    def data_show(self):
        ret = DataParse().data_parse()
        try:
            if ret.get('result') == "success":
                return "data parse success"
            elif ret.get('result') == "fail":
                print("data parse failed: {}".format(ret.get('reason')))
                return "data parse failed"
            else:
                return "Unknow Reason"
        except:
            return "Server Unknow Reason"

那Test.py文件中的代码可以这样写:

from unittest import mock
from unittest import TestCase
import unittest
from function1 import DataParse, DataShow
class TestData(TestCase):
    # patch装饰器
    @mock.patch('function1.DataParse')
    def test_print1(self, mock_DataParse):
        # 先拿到类的mock实例
        dataParse = mock_DataParse.return_value
        # 在通过类的mock实例调用方法,对方法返回值进行mock
        dataParse.data_parse.return_value = {"result": "success", "reason":"null"}
        # 调用data_show
        statues = DataShow().data_show()
        print(statues)
        self.assertEqual(statues, "data parse success")
    @mock.patch('function1.DataParse')
    def test_print2(self, mock_DataParse):
        # 先拿到类的mock实例
        dataParse = mock_DataParse.return_value
        # 在通过类的mock实例调用方法,对方法返回值进行mock
        dataParse.data_parse.return_value = {"result": "fail", "reason": "Data Error"}
        # 调用data_show
        statues = DataShow().data_show()
        print(statues)
        self.assertEqual(statues, "data parse failed")
if __name__ == "__main__":
    unittest.main()
=========输出=============
data parse success
data parse failed: Data Error
data parse failed

步骤

参考: https://www.9xkd.com/user/plan-view.html?id=1585826642

推荐阅读:
  1. mock是什么?怎么用?
  2. Mock.js

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mock 封装 moc

上一篇:利用os模块编写一个能实现dir -l输出的程序

下一篇:网上实名认证的风险有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》