解决接口依赖,数据依赖的工具 之一 -mock
问题场景:
1、需要进行接口测试用例脚本设计,调试,可是开发接口尚未交付。没有可用接口?
2、接口依赖,依赖接口出问题,无法正常调用调试接口测试脚本。case依赖问题?
解决方案:
注:以下都是基于python3.X的环境开展 (小编的版本:3.7.3)
在工作过程中,经常会遇到上述这两种情况。测试工作需要提前介入。这个时候就要借助其他的工具来达到接口模拟返回的效果。今天在整理mock服务的同时,也来列举一下,都有哪些方法,工具,可以应用于减少类似接口情况的依赖问题。
以下例子都是简单应用,排名不分先后。
一、通过mock.Mock,替换数据返回,或者是引发异常
参数:Mock( spec=None , side_effect=None , return_value=DEFAULT , wraps=None , name=None , spec_set=None , unsafe=False , **kwargs )
Mock可传入的参数,当前主要应用的是,return_value=DEFAULT这个参数,如果对其他参数的应用有兴趣的话,可以查阅官方文档,文章默认会记录其连接
导入Mock : from unittest.mock import Mock
1、return_value 设置此项以配置通过调用模拟返回的值
实例化Mock类得到mock对象,设置对象的返回值
替换需要调用的实例 ,设置返回值,return_value =data ( 这里定义了一个字典) 如图
模拟了返回数据,这里可以做的事情就很多了。比如添加断言,判断内容,或者是判断响应码,等等。可以根据实际需求,去返回相对应的值
2、side_effect 这可以是在调用模拟时要调用的函数、可迭代或要引发的异常(类或实例)
官方文档:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.return_value
二、通过fiddler 自动响应,返回数据
--待补充
三、应用django,开发web接口,模拟数据返回
--待补充
文档:https://www.runoob.com/django/django-first-app.html
四、应用flask,实现接口,以及数据返回
如果说前面的mock是模拟接口返回的话,那么flask就是创建一个接口,然后你可以定义接口返回的数据,接收的参数
1、创建一个服务,通过flask框架 server = flask.Flask(__name__)
2、@server.route()可以将普通函数转变为服务、接口的路径、请求方式,如果不写methods则默认get方法
3、编辑函数,设置get,post方法需要返回的数据
4、运行时定义host,port,运行后访问接口
5、接口访问