《如何进行接口mock测试》
前言:
Mock通常是指:在测试一个对象时,我们构造一些假的对象来模拟与其交互。而这些Mock对象的行为是我们事先设定且符合预期。通过这些Mock对象来测试对象在正常逻辑,异常逻辑或压力情况下工作是否正常。
那么哪些测试场景需要进行mock呢?
1)上游接口不方便更改,下游无法联调,此刻需要mock上游数据来完成本次的预期结果
2)依赖的上游的接口尚未开发完成
3)接口返回的结果不满足目前的测试需求。虽然接口已经实现,但是个别字段/返回不满足测试要求;
常用的代理工具拦截请求:Charles、 Fiddler【本文以Fillder工具示例】
mock数据分为两种情况:
1:mock请求的数据已至返回数据变更为预期结果
2:mock返回的数据已至返回至界面显示效果
1:修改请求数据
1)右键选中请求》replay》Ruissue and Edit 》修改参数》run to completion
- rules ->Automatic BreakPoints -> Before request :拦截客户端发送到服务器的请求,修改header的内容

2:修改返回数据After response(拦截服务器响应数据,修改后再返回客户端)
1)打开URL访问
2)找到相对应的接口,设置断点拦截请求(After response)
3)点击拦截接口》修改压缩为none,修改数据》设置为压缩GIZP
4)拖动接口至规则》取消拦截放行
5)继续运行,修改返回数据成功

延迟接口修改
1、 获取需要延迟的接口
2、配置延迟规则 AutoResponseder
延迟规则配置:*delay:2000 延迟2S

3、然后开启是请求延迟还是响应延迟

模拟弱网环境
Bandwidth(带宽) Utilistation(利用百分比) Round-trip(往返延迟) MTU(最大传输单元)
3G:300k-2Mbps左右
2.5G(GPRS)一般在100kbps
2G(GSM)一般在5-9kbps
PS:弱网、2G、3G建议的上下行速率如下,同时还可以控制丢包率的数据
打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多

Fiddler弱网的原理
Rules—>Cutomize Rules打开CustomRules.js 文档,设置网络参数

if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "0.3";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "0.15";
}oSession["request-trickle-delay"] = "0.3";
- Delay sends by 300ms per KB uploaded:上传1KB内容需要300ms,转化一下上传速度:1Kb/0.3s = 3.3KB/s,网络上行速度为3.3KB
- Delay receives by 150ms per KB downloaded:下载1KB内容需要150ms,转化后的下载速度:1KB/0.15s=6.6KB/s,网络下载速度为6.6KB,若下载速度为50KB/s 则延迟时间应为20ms(1kb/50kb)
- 同时选择接口开始和结束请求,查看响应时间

https://www.cnblogs.com/fighter007/p/13999543.html
https://www.doc88.com/p-3015598697603.html
《如何进行接口mock测试》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- uniapp 实现信息推送(App)
废话不多说直接上代码 以下代码需写在onlaunch生命周期内 onlaunch(){// onlaunch应用级生命周期 :当uni-app 初始化完成时触发(全局只触发一次) //#ifdef A ...
- XCTF_ics-07
这道题确实也卡了很久 垮了垮了 话不多说直接找到view source.php审代码吧 先看这段 要你: (1)floatval($ _ GET [id])!=='1' //浮点不为1 (2)subs ...
- MySQL数据类型 储存引擎
存储引擎 日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt,pdf,word,mp4...) 针对不同的数据应该对应着不同的处理机制来存储 存储引擎就是不同的处 ...
- SQL 练习3
查询存在" 01 "课程,可能不存在" 02 "课程的情况(不存在时显示为 null ) SELECT * FROM (SELECT * FROM SC WHE ...
- deepin下zerotier组网
环境:deepin 1.安装zerotier curl -s https://install.zerotier.com/ | sudo bash 官网也是有的 安装完成之后进行内网连接 sudo ze ...
- NOIP 模拟 $23\; \rm 题$
题解 \(by\;zj\varphi\) 考虑 \(\rm DP\) 设 \(dp_{k}(S)\) 表示前 \(k\) 个人来后 \(S\) 集合中的苹果都存在的概率是否大于 \(0\) 考虑倒着转 ...
- 【springcloud】服务熔断与降级(Hystrix)
转自:https://blog.csdn.net/pengjunlee/article/details/86688858 服务熔断 服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的 ...
- 深入浅出Mybatis系列(九)---缓存
MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存. 1.默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启. 2.二级缓存需要手动开启和配置,他是基于namesp ...
- ArrayPool 源码解读之 byte[] 也能池化?
一:背景 1. 讲故事 最近在分析一个 dump 的过程中发现其在 gen2 和 LOH 上有不少size较大的free,仔细看了下,这些free生前大多都是模板引擎生成的html片段的byte[]数 ...
- vscode 1.32.x按下鼠标左键无法拖曳选择,而旧一点的版本1.30.2可以
最近升级vscode后,无法通过鼠标左键选择文本,恢复到旧版本1.30.2就可以了. 另外:1.32.x和1.31.1都不正常 进一步测试发现:在中文输入法下(无论中英输入模式),都有问题:切换到纯英 ...