美文网首页
Mock笔记

Mock笔记

作者: skoogi | 来源:发表于2016-12-06 14:59 被阅读0次

mock的几种用法

1. mock

mock用于在测试中替换掉一些麻烦的外界服务(网络请求、文件操作等),专注于测试测试对象本身。

mock的使用介绍已经有很多,这里只记录Python中mock测试的构造方法,便于以后查阅。

2. 构造方式

2.1. 通过patch构造对象

def setUp(self):

        self.request_patcher = mock.patch(REQUEST_MANAGER_PATH)

        self.mock_request_manager = self.request_patcher.start()

        self.csm = CustomerServiceManager(self.mock_request_manager)

def tearDown(self):  // 该部分在以下例子略去

        self.request_patcher.stop()  

2.2. 通过patch构造方法

self.request_patcher = mock.patch(REQUEST_MANAGER_PATH)

self.mock_request_manager = self.request_patcher.start()

self.mock_request_manager.get.return_value = 'returns'

2.3. 通过Mock构造对象

self.mock_response = mock.Mock()

self.mock_response.content = 'something'

这里不能直接赋值

错误示例:self.mock_response = 'something'    结果就是mock_response从mock对象变成了字符串对象。

2.4. 通过Mock构造方法

self.mock_request = Mock()

self.mock_request.return_value = 'something'

2.5. 通过patch装饰器构造

从之前几例已经不难看出,无论是构造方法还是对象,都是基于一个Mock对象。更何况在Python中方法本来就是对象

@mock.patch(REST_PATH + '.sendTemplateSMS')

def test_send_auth_code(self, mock_send):

        pass

mock替换后对象作为参数传入函数。

当存在多个patch装饰器时,需要注意参数顺序。

@mock.patch(func2)

@mock.patch(func1)

def test_funcs(self, mock_func1, mock_func2):

        pass

3. 如何抓到mock对象

初写mock测试时,感觉mock的思想很容易理解,mock的用法也挺人性化,主要困扰是我已经想好了mock与测试计划,可是我就是patch不到我想mock的对象。

其实这里主要是要看我要patch的对象什么时候被测试对象用到,然后在被用前抓住mock掉。

模拟一个东西要看它用在何处,而不是来自哪里。

相关文章

  • Mock笔记

    mock的几种用法 1. mock mock用于在测试中替换掉一些麻烦的外界服务(网络请求、文件操作等),专注于测...

  • (原创)PowerMockito实战及心得

    在上一篇学习笔记:How to mock Resthighlevelclient? 我提到了PowerMockit...

  • Mock简明文档

    Mock简明文档 Mock.mock() Mock.mock( requestUrl?, requestType?...

  • mockjs

    https://github.com/nuysoft/Mock/wiki/Mock.mock() 常用方法Mock...

  • 使用 Mockjs 模拟数据

    Mock 数据 Mock 在 vue 中的使用 使用npm下载mock 2.使用 mock 在 mock 文件夹下...

  • Contacts(TableViewController)报错总

    1. mock网络问题 问题:mock网络的JSON数据无法获取 提示:mock请求出错:mock....777...

  • iOS单元测试资料收集

    mock 中文资料 官方原版教程,开始mock mock3 API 参考

  • mock语法

    mock使用方法 Mock.mock( rurl?, rtype?, template|function( opt...

  • mock.js入门

    下载mock npm install mockjs 新建文件引入mock var Mock = require('...

  • Mock.mock()

    官方文档 https://github.com/nuysoft/Mock/wiki Mock.mock() 1. ...

网友评论

      本文标题:Mock笔记

      本文链接:https://www.haomeiwen.com/subject/snrlmttx.html