代码编织梦想

一、测试背景

1.1、客户端测试面临的场景

        测试场景:服务端返回异常数据的情况下,客户端如何处理?

 1.2、服务端测试面临的场景

        测试场景:订单系统需要用到支付系统返回的数据,但是支付系统还没有开发完成 如何提前开始测试?

 

 二、Mock技术

        Mock俗称“挡板”,在测试过程中,对于某些不容易获取的数据,用一个虚拟的对象来返 回期望的数据,从而模拟了特定的测试场景 Mock可以作用于客户端,也可以作用于服务端

2.1、客户端Mock处理

        在客户端测试里,通常可以借助一些抓包工具来修改服务端的返回,达到特定的测试目的 如Fiddler、Charles

        2.2、如何实现服务端Mock

        方案一:让研发在代码里进行Mock
        例如:

下单函数(){         

           //检查用户数据

           // 检查商品库存

Boolean flag = 调用支付系统接口

if (flag){

        修改订单状态为成功

}else{

修改订单状态为失败

} }

修改:


 

下单函数(){

        //检查用户数据;

       // 检查商品库存;

Boolean flag = true;

if (flag){

        修改订单状态为成功

}

else{

        修改订单状态为失败

} }

 方案二:

        创建一个MockServer,模拟支付系统的返回数据,两种方式实现MockServer

        1、自己写代码实现

        2、使用业界开源MockServer

三、开源的MockServer

        moco 下载地址 https://github.com/dreamhead/moco

        3.1、用法

        1、配置好java环境

        2、下载moco runner包

        3、添加mock配置文件

        4、执行命令 java -jar moco-runner-1.0.0-standalone.jar 协议类型 -p 端口号 -c 配置文

        3.2、参数解释

        java -jar moco-runner-1.0.0-standalone.jar 协议类型 -p 端口号 -c 配置文件

        协议类型:

        支持http、https、socket 端口号:

        任意指定一个没有被占用的端口 配置文件:

        请求和响应的配置,json格式

四、json配置文件

        整体分为三部分

        description(可选):

        配置备注 request:接口的请求信息

        response:接口的响应信息 格式

        [

                配置段1,

                配置段2,

                配置段3,

                配置段n

        ]

4.1、场景一:没有参数的get请求

{
"description": "没有参数的get请求",
"request": {
"uri": "/mtx/query",
"method": "get"
},
"response": {
"text": "this is mtx"
}
}

4.2、场景二:有参数的get请求

{
"description": "有参数的get请求",
"request": {
"uri": "/mtx/query1",
"method": "get",
"queries": {
"id": "1",
"name": "auto"
}
},
"response": {
"text": "auto test"
}
}

4.3、场景三:参数为表单类型的post请求

{
"description": "参数为表单类型的post请求",
"request": {
"uri": "/mtx/submit",
"method": "post",
"forms": {
"username": "mtx",
"password": "123456"
}
},
"response": {
"text": "success"
}
}

4.4、场景四:参数为json的post接口

{
"description": "参数为json格式的Post请求",
"request": {
"uri": "/mtx/json/submit",
"headers": {
"content-type": "application/json"
},
"json": {
"name": "hi",
"age": "3"
}
},
"response": {
"json": {
"message": "success",
"status": "1"
}
}
}

4.5、场景五:可以重定向的场景

{
"description": "可以重定向的场景",
"request": {
"uri": "/mtx/redirect",
"method": "get",
"queries": {
"id": "1"
}
},
"redirectTo": "http://www.baidu.com"
}

4.6、场景六:返回异常状态码的请求

{
"description": "返回异常状态码的场景",
"request": {
"uri": "/mtx/query2",
"method": "get",
"queries": {
"id": "1",
"name": "auto"
}
},
"response": {
"status": "500"
}
}

4.7、场景七:响应有延迟请求

{
"description": "响应有延迟的场景,unit为mailisecond或者second",
"request": {
"uri": "/mtx/delay",
"method": "get",
"queries": {
"id": "1",
"name": "auto"
}
},
"response": {
"latency": {
"duration": 500,
"unit": "millisecond"
},
"json": {
"name": "success",
"status": "1"
}
}
}

4.8、其他场景

模拟xml格式请求 

模拟文件上传 

URL正则匹配

moco/apis.md at master · dreamhead/moco · GitHub

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_49428126/article/details/127157891

如何用charles进行mock测试_americanbeauty的博客-爱代码爱编程

如何用charles进行mock测试 使用map local方式: 使用charles进行抓包,请求希望进行mock测试的接口,如订单列表接口OrderList(修改某个订单的状态)。 选择OrderList接口,右

接口测试-mock测试方法_水星_的博客-爱代码爱编程_mock

一、关于Mock测试 1、什么是Mock测试? Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取的比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。   2、为什么要进行Moc

spring进行mock测试-爱代码爱编程

目录 什么是mock? mock有哪些工具? 以下是关于spring测试的相关,详细可以查看: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html#testing-introduction 代码下载:https:/

使用fiddler工具进行mock测试-爱代码爱编程

前言 mock测试就是在接口测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。简单说就是模拟接口返回的数据,但是不改变数据库或者编译成索引的数据。在测试中,常常设定返回数据而反推模拟所做的一种测试手段。有一个比喻形容得很逼近,比如夏天不可能下雪,但是现在又是夏天,怎样才能让它下雪呢,只能模拟冬天下雪的场景,这就

python 如何进行mock测试-爱代码爱编程

文章目录 一、背景二、使用脚本进行mock 一、背景 为什么要进行mock? 1、在实际的开发工作过程中,前后端需要联调,但是后端的接口还没开发完成,如果前端等到后端完全开发完成,再进行联调,那么进度可能就会落后,这时前端则需要通过mock手段,查看页面的展示效果 2、在涉及第三方接口时,则需要通过mock手段,查看返回的结果 3、进行分模块

使用Fiddler进行Mock测试-爱代码爱编程

目录 1、接口抓包 2、复制该接口数据到本地 3、修改你要mock的数据 4、替换json文件 1)在web session 面板中找到对应的请求,然后将其拖到AutoResponder面板中。 2)在RuleEditor中单击“Find a file...”,选择本地json文件的路径。 5、激活规则 6、save,刷新页面 7、跨域问

测试过程中为什么要做接口Mock测试,以及如何做-爱代码爱编程

文章目录 关于Mock测试什么是Mock测试?为什么要进行Mock测试?Mock对象适用场景Mock测试的优势Mock测试存在的问题Mock测试方式Mock Server-MocofiddlerMock测试示例 关于Mock测试 什么是Mock测试? Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletReques

springboot进行mock测试-爱代码爱编程

1、使用spring @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class PersonControllerTest2 { @Autowired private WebApplicationContext contex

使用Postman进行Mock测试-爱代码爱编程

使用Postman进行Mock测试 新建一个Mock服务访问Mock服务 接口信息 接口路径 /mock/testdemo 请求头 Content-Type application/json token 21232f297a57a5a743894a0e4a801fc3 请求体 { "memberid": "264903145",

Mock测试-爱代码爱编程

Mock测试 Mock测试Mock测试的作用Mock测试的优点Mock测试的缺点Mock客户端测试Python中的Mock库Mock服务端 Mock测试 Mock 就是在测试过程中,对于一些不容易构造/获取的对象,创建一个 Mock对象 来模拟对象的行为 Mock 方法 是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或

听完我的建议,linux将不再困难_linux小百科的博客-爱代码爱编程

这篇文章主要针对于正处于迷茫之时的初学者同学们,在Linux领域深耕多年的老工程师们请绕道。 首先我要对各位初入茅庐的初学者们说,学习Linux千万不要怕折腾。在学习过程中你会遇到各种各样奇怪的问题。即使你跟着视频亦或者教程一字不落的跟着照搬,但是很多时候你仍然会遇到就是不成功的情况。别人的一下子就成功了,而你的就是各种错误。然而可怕的是你还抓耳挠腮