加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

Python mock的基本使用

发布时间:2020-02-17 04:04:11 所属栏目:资源 来源:搜狗测试
导读:Mock 是什么 Mock即模拟的意思。在 Python 中,提供了基于 单元测试 的mock模块,它的主要作用是使用mock对象替代掉指定的Python对象,以达到模拟对象功能的行为。 在单元测试实际项目中,会遇到如下问题: 接口间的相互依赖 数据库 中真实数据的模拟 第三
  Mock是什么  Mock即模拟的意思。在Python中,提供了基于单元测试的mock模块,它的主要作用是使用mock对象替代掉指定的Python对象,以达到模拟对象功能的行为。  在单元测试实际项目中,会遇到如下问题:  接口间的相互依赖  数据库中真实数据的模拟  第三方接口调用  但由于单元测试仅针对当前单元进行测试,这就要求所有的内部或者外部依赖都应该是稳定的,采用mock的方法模拟跟本单元依赖的其他单元,可以将测试重点放在当前单元功能,排除外界因素干扰,提升测试精准度。  Mock基本用法  Mock对象是mock模块中最重要的概念。Mock对象就是mock模块中的一个类的实例,这个类的实例可以用来替换其他的Python对象,来达到模拟的效果。Mock类的定义如下:Python mock的基本使用  可以看到,Mock对象其实就是Python的一个类。  mock模块在Python3中是集成在unittest模块中的,我们先看一个简单的例子,用来说明mock模块的基本用法。  比如获取天气信息接口:Python mock的基本使用  然后我们使用mock对象在单元测试中分别测试正常返回和异常返回的情况:Python mock的基本使用  通常情况下,Mock对象的一般用法是这样的:  1、确定要测试的函数,或者类,或者类实例,作为mock的对象;我们要测试的是get_notify这个函数,这个函数依赖于send_request这个函数,所以需要替换的是send_request这个函数。  2、实例化Mock类得到一个mock对象,并设置这个mock对象的行为,比如被调用的时候返回什么值,被访问成员的时候返回什么值等;通过return_value设置mock对象的返回值。  3、使用2中的mock对象,替换掉1中确定的对象;替换掉notify.send_request。  4、可以开始写测试代码,这个时候我们可以保证被替换掉的对象在测试用例执行过程中行为和我们预设的一样。  Mock静态方法  有些函数可能不属于你,你也不在意它的内部实现而只是想调用这个函数然后得到结果而已,这种时候就可以用 patch 方式来模拟。  如果调用的外部代码是面向过程的风格,也就是一个一个函数,那么就用 mock.patch 就可以;如果是面向对象的风格,比如你调用的只是一个类中的某个方法,那么要用 mock.patch.object 。  上述的单元测试案例,使用patch时需要注意,它是一个装饰器,需要把你想模拟的函数写在里面,然后在后面的单元测试案例中为它赋一个具体实例,再用 return_value 来指定模拟的这个函数希望返回的结果就可以了,后面就是正常单元测试代码。实现如下:Python mock的基本使用  结束语  本文的主要目的是介绍mock能做什么,当你知道了mock能做什么之后,要如何学习并掌握mock呢?最好的方式就是查看阅读官方文档,并在自己的单元测试中熟练控制外部服务和依赖。

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读