1.应用场景:
1.1 测试环境中,可能存在部分依赖外部系统的http接口,因为外部系统未部署或服务不可用等其他原因,导致接口无法正常响应(特别是qa1环境);
而平时的测试主要还是以界面上的功能测试为主,所以需要自行mock接口。这里可以利用charles抓包工具来实现。
2.环境准备:
2.1 下载charles,并且配置好代理
这一步比较简单,经常使用 抓包工具的应该都熟悉,可以参考以下文章 https://www.jianshu.com/p/187afc1049ca
3.实践步骤:
3.1 charles 提供了 map local 和 map remote 两种方式来实现mock(PS : 个人觉得比对某一接口打断点,然后修改返回参数 这种骚操作好用)
对于 map local 来说,其实是将构造好的返回结果,以json文件的形式存在本地,然后charles会自行构造响应头,返回数据。这种方式实现成本比较低,但是可能灵活性不是很高;
而 map remote,则是需要有一个可用的mock server,将响应头和返回结果都构造好,然后直接返回。这种方式,如果自己写代码实现,成本会比较高,但是灵活性也相对较高,能适用更多场景。
3.2 下面以具体例子,演示一下 map local 的使用:
打开charles,让接口请求都中转到charles,先右键接口,在弹窗中按以下步骤配置:

PS:这一步需要先将构造好的接口返回参数,以json文件格式保存;(一个小技巧:可以在其他接口能正常响应的环境,复制一份正常的响应数据,然后做对应的修改)
例子

这一步配置完之后,其实已经成功了一半;
重新回到界面,点击对应的功能,触发接口请求,大概率会看到接口还是报错的,但是charles上已经是正常返回数据的了;
打开F12 的console界面,可以看到报错提示,这里出现的问题其实是跨域问题

跨域问题的解决:
点击Charles的Tools菜单,点击 Rewrite Settings ,在弹窗中配置重写规则,针对指定的接口,重写响应头

配置完成之后,点击OK,再重新回到界面触发请求,会发现接口已经正常返回Mock的数据了
到这里,利用map local 做接口 mock 就已经成功了,可以解决大部分使用场景,缺点在于返回结果是放在本地的文件中,可能需要每次都去修改一下;
 
3.3 使用map remote
配置的方式和map local差不多,不进一步展开。使用这个功能的关键点在于,需要有一个可用的mock server,并且能自行构造响应头,以解决跨域问题;
如果使用map remote的话,个人更倾向于自己搭一个python web 应用来作为 mock server,可以灵活定制响应结果。

关于使用charles进行mock步骤的更多相关文章

  1. 测试同学必备抓包工具--charles之mock数据

    charles中有三个是我经常用到来mock数据的. 一. 打断点--Breakpoints 1. 先切换查看‘Structure’模式 2. 找到目标链接,对其父级进行打断点,如图 3. 取消掉再次 ...

  2. 利用Fiddler或Charles进行mock数据

    使用场景:服务器数据不符合测试条件时,我们可以通过在本地创建虚拟数据来打到测试用例所描述的条件. fiddler使用方法 1.首先在本地创建txt数据:将抓到的response中的json数据拷贝到记 ...

  3. 利用Fiddler或Charles进行mock数据创造测试环境

    使用场景:服务器数据不符合测试条件时,我们可以通过在本地创建虚拟数据来打到测试用例所描述的条件. fiddler使用方法 1.首先在本地创建txt数据:将抓到的response中的json数据拷贝到记 ...

  4. 用Fiddler或Charles进行mock数据搭建测试环境

    转载:http://blog.csdn.net/qqYJ5/article/details/62216582 应用场景:服务器数据不符合测试条件或者服务器未开发完成时,我们可以通过在本地创建数据来达到 ...

  5. charles安装破解步骤

    访问该地址https://www.zzzmode.com/mytools/charles/ 安装——生成破解工具charles.jar——替换

  6. react中使用charles实现本地数据mock

    首先下载charles软件地址,更详细的使用方法都包含在操作文档里,包含汉化版补丁(下载后查看) 链接:https://pan.baidu.com/s/1Q5rMbcX0Wus7AwdGUWa-Wg ...

  7. Charles抓取https请求

    最近公司将Windows产品的http请求,替换成https请求了,当https请求超过5次失败,就自动切换回http请求.测试时使用Charles抓包测试. 一.http抓包 http抓包比较简单, ...

  8. Charles的HTTPS抓包方法及原理分析

    原文地址:http://www.jianshu.com/p/870451cb4eb0 背景 作为移动平台的RD,项目开发过程中一项比较重要的甩锅技能——抓包应该大家都比较熟悉了,毕竟有些bug可能是由 ...

  9. 怎样使用charles抓包

    本人因为是做前端的工作,需要后台写的一些数据,所以我需要一个神器能够抓到pc端或是移动端的后台数据,近期我发现一个神器“Charles”抓包神器. 需要操作的步骤如下: 1.先在网上下载Charles ...

随机推荐

  1. 帆软报表(finereport) 组合地图 保持系列名和值居中

    自定义JavaScript代码,使用HTML解析 function(){ var name = this.name; var total = '<div style="width:10 ...

  2. Python解释器安装、多版本共存以及手动添加环境变量教程

    Python解释器安装.多版本共存以及手动添加环境变量教程 一.Python解释器下载 1. 先进入官网(python.org) 下图为网站的主页,依次按顺序点击"①Download&quo ...

  3. Solution -「洛谷 P5325」Min_25 筛

    \(\mathcal{Description}\)   Link.   对于积性函数 \(f(x)\),有 \(f(p^k)=p^k(p^k-1)~(p\in\mathbb P,k\in\mathbb ...

  4. Solution -「CF 840C」On the Bench

    \(\mathcal{Description}\)   Link.   给定数列 \(\{a_n\}\),求排列 \(\{p_n\}\) 的个数,使得 \((\forall i\in[1,n))(a_ ...

  5. Solution -「洛谷 P4449」于神之怒加强版

    \(\mathcal{Description}\)   Link.   给定 \(k\) 和 \(T\) 组 \(n,m\),对于每组,求 \[\sum_{i=1}^n\sum_{j=1}^m\ope ...

  6. systemverilog中奇怪的语法

    1.->运算符 expression_a->expression_b其实等效于(!expression_a || expression_b),systemverilog中利用 || 运算的 ...

  7. Vue 源码解读(1)—— 前言

    当学习成为了习惯,知识也就变成了常识. 感谢各位的 点赞.收藏和评论. 新视频和文章会第一时间在微信公众号发送,欢迎关注:李永宁lyn 文章已收录到 github 仓库 liyongning/blog ...

  8. Linux性能优化之磁盘I/O调优

    I/O指标已介绍,那么如何查看系统的这些指标呢? 一.根据工具查性能 二.根据性能找工具 三.磁盘I/O观察实例 iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的 使用率 . I ...

  9. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK 问题解决

    1. 问题描述 使用idea对Java工程执行mvn compile命令进行编译,出现以下报错: [ERROR] Failed to execute goal org.apache.maven.plu ...

  10. GoJS 使用笔记

    作为商业软件,GoJs很容易使用,文档也很完备,不过项目中没有时间系统地按照文档学习,总是希望快速入门使用,所以将项目中遇到的问题精简一下,希望对后来者有些帮助. 开始使用 这里先展示一个最简单的例子 ...