15.接口自动化学习-Mock(挡板/测试桩)

news2024/10/5 22:24:49

场景:

新需求还未开发时,使用mock提早介入测试,等后边开发后,进行调试

  • 三方接口返回效率低,使用mock技术走通流程

1.mock方式

(1)如果会写django或flask,可以写简单对应的代码
(2)一些接口工具具备这个功能(postman)
(3)一些现成的框架直接使用:Moco框架
构造一个依赖的服务,并给予他预期的服务返回值,适用范围广,更加适合 集成测试
Moco框架
类似一个Mock的工具框架,一个简单搭建模拟服务器的程序库/工具,下载就是一个jar包

特点:

  • 简单的配置request、response等即可满足要求
  • 支持http、https、socket协议,可以说是非常的灵活性
  • 支持在request中设置Headers,Cookies,StatusCode等
  • 对get\post\put\delete等请求方式都支持
  • 无需环境配置,有Java环境即可
  • 修改配置后,立即生效。只需要维护接口,也就是契约即可
  • 支持多种数据格式,如JSON\Text\XML\File等
  • 可与其他工具集成,如Junit\Maven等

2.Mock服务搭建

(1)需要安装jdk
(2)下载moco的jar包
moco下载
提取码:8eem

(3)启动服务,jar包名称根据下载的jar包写
http代表这个模拟的是http请求,
-p 9090是定义端口号
-c test.json是编辑的json文件名
java -jar moco-runner-0.11.0-standalone.jar http -p 9090 -c test.json
如果cmd乱码就用:`
``java -jar -Dfile.encoding=utf-8 moco-runner-0.11.0-standalone.jar http -p 9090 -c demo.json```
(4)验证
/demo1:是json文件中定义的uri
访问:http://localhost:9090/demo1

3.Mock请求构建

start.bat


@echo on

java -jar -Dfile.encoding=utf-8 moco-runner-0.11.0-standalone.jar http -p 9090 -c demo.json
@echo off

pause

demo.json

[
	{
		"description":"11",
		"request":{
			"uri":"/shop",
		"method":"Get"
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

浏览器输入:http://127.0.0.1:9090/shop
在这里插入图片描述

4.配置不同的请求

(1)约定uri

[
	{
		"description":"约定uri",
		"request":{
			"uri":"/shop"
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(2)约定请求参数

[
	{
		"description":"约定请求参数",
		"request":{
			"queries":{
				"key1":"123",
				"key2":"cvf"
			}
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(3)约定请求方法

[
	{
		"description":"约定请求方法",
		"request":{
			"method":"DELETE"
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(4)约定请求头

[
	{
		"description":"约定请求头",
		"request":{
			"headers":{
				"Content-Type":"application/xml"
			}
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(5)约定请求体参数-form

[
	{
		"description":"约定请求体参数-form",
		"request":{
			"forms":{
				"key1":"anc"
			}
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(6)约定请求体参数-json

[
	{
		"description":"约定请求体参数-json",
		"request":{
			"json":{
				"key1":"anc",
				"key2":"anc"
			}
		},
		"response":{
			"text":"Hello,baby"
		}	
	}
]

(7)返回响应头和json

[
	{
		"description":"返回响应头和json",
		"request":{
			"json":{
				"key1":"anc",
				"key2":"anc"
			}
		},
		"response":{
			"headers":{
				"Content-Type":"application/json"
			},
			"json":{
				"code":"200"
			}
		}	
	}
]

代码测试

HOST = 'http://127.0.0.1:9090'
import requests
def test():
    url=f'{HOST}/shop_up'
    payload={'key':'abc'}
    # form格式:data=payload json格式:json=payload
    resp=requests.post(url,json=payload)

    print(resp.text)

if __name__ == '__main__':
    test()

要先执行jar包启动服务,在运行上述代码

5.异步接口实战

(1)同步和异步

同步:不利于性能提升,需要等待响应
在这里插入图片描述
异步:发送请求后,响应后续给出,可以先做其他的
eg:体检拿结果,可以A项做完后,直接做B项的同时等A的结果,不用先等A的结果,再去做B。

(2)异步接口实现

  • 业务场景
    店铺向平台申请退单请求
    平台接受请求,核实信息
    平台3个工作日内告知结果
  • 具体实现
    通过提交申请的接口给服务端
    服务器立即返回这个申请id
    后续使用查询的接口,带上id查询结果
    看是否有返回结果
  • mock+异步查询技术
    拿到申请和查询订单结果接口的文档,获取url、参数、响应等信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1619351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小米一面:说说MVC与设计模式的关系

前言 大家好,我叫阿杆,不叫阿轩。 先来看看面试环节吧。 面试官:请说说MVC模式是基于哪种设计模式的? 求职者:MVC本身不就是一种设计模式吗? 面试官:我的意思是,MVC是基于23中设计…

【04-提升模型性能:集成学习与超参数优化】

文章目录 前言集成学习BaggingBoosting超参数优化随机搜索贝叶斯优化总结前言 在前几篇博文中,我们已经介绍了一些机器学习的基础知识、Scikit-learn的核心工具与技巧,以及如何评估模型性能。本篇博文将重点讲解两个可以显著提升机器学习模型性能的高级策略:集成学习和超参数…

python企业员工培训考试系统django+vue

这次开发的供电公司安全生产考试系统管理员,教师,学生。管理员功能有个人中心,学生管理,教师管理,主观题信息管理,主观题回答管理,主观题评分管理,成绩信息管理,试卷管理…

命名空间:namespace

对于无名命名空间 :但是不能再次定义相同名称的变量 在同一文件中

Linux程序调试优化(2)—— 一次学会嵌入式Linux下程序崩溃定位

文章目录 1.gdb调试1.1 gcc 编译时不带-g1.2 gcc 编译时带-g 2.coredump栈回溯2.1 使能core文件生成2.1 借助core文件回溯堆栈 3.backtrace捕捉SIGSEGV信号4.其他工具5.总结 写程序时,难免碰到程序崩溃的现象,而如何排查这些内存崩溃问题,例如…

Pulsar Meetup 深圳 2024 会务介绍

“ Hi,各位热爱 Pulsar 的小伙伴们,Pulsar Meetup 深圳 2024 报名倒计时啦,快来报名。这里汇集了腾讯、华为和谙流科技等大量 Pulsar 大咖,干货多多,礼品多多,不容错过啊。 ” 活动介绍 图片 由 AscentStre…

巧用波卡生态优势,Mythical Games 引领 Web3 游戏新航向

Polkadot 对创新、安全和治理的承诺为 Mythical Games 提供了极大的发展价值。这个链上生态不仅将支持 Mythical Games 成长发展,还将帮助其他 Mythos 合作伙伴来壮大建设项目。 —— Mythical Games 创始人兼首席执行官 John Linden 近期 Web3 游戏行业又有新动向&…

【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告 【格式】PDF版本 【关键词】战略规划、MBB、麦肯锡 【核心观点】 - 价值定位是企业希望深…

HORROR SYSTEM

HORROR SYSTEM是一个创新的工具包,允许开发者在Unity3D中创建独特的原创恐怖游戏。 HORROR SYSTEM是一款强大而灵活的工具,旨在基于Unity3D引擎创建沉浸式第三人称恐怖游戏。 这项资产易于使用且直观,可以让任何经验水平的开发人员将他们的想法付诸实践,创造出高质量、充满…

飞行汽车飞行控制系统功能详解

飞行汽车是一种创新的交通工具,结合了汽车和飞机的特点。它可以在陆地上行驶,同时也具备在空中飞行的能力。飞行汽车的概念已经存在多年,并且近年来随着技术的进步和研发的深入,这种交通工具正在逐渐从概念走向现实。 飞行汽车的…

NLP方面知识

NLP方面知识 一 基础1.Tokenizer1.1 分词粒度:1.2 大模型的分词粒度1.3 各路语言模型中的tokenizer 2.Embedding layer2.1 理解Embedding矩阵 一 基础 1.Tokenizer tokenizer总体上做三件事情: 分词。tokenizer将字符串分为一些sub-word token string&…

学习Rust的第10天:枚举和模式匹配

今天我们来看看一个类似的概念 enums 。 Enums: We saw that in Rust, enums are data types that list possible values, giving a simple and type-safe mechanism to describe alternatives. We looked at how to create enums and use them to represent similar possibili…

MT8788智能模块简介_MTK联发科安卓核心板方案厂商

MT8788安卓核心板是一款具备超高性能和低功耗的4G全网通安卓智能模块。该模块采用联发科AIOT芯片平台,供货周期长。 MT8788核心板搭载了12nm制程的四个Cortex-A73处理器核心和四个Cortex-A53处理器核心,最高主频可达2.0GHz。板载内存容量可选为4GB64GB(也…

【Win】怎么下载m3u8视频\怎么通过F12开发人员工具获取视频地址\怎么下载完整的.ts格式视频

怎么下载m3u8视频?首先通过浏览器本地的开发人员工具,获取m3u8的地址,然后再通过第三方下载工具下载,此处以N_m3u8DL-CLI_v3.0.2为例 如下图的步骤,即可获取到视频的m3u8地址 打开N_m3u8DL-CLI_v3.0.2,粘贴…

生成式AI在B端产品的应用分析

AI产品发展到现在,消费端的产品应用还受到比较大的限制;但是在B端,已经有了不错的表现。作者总结了AI产品在B端的几款应用,一起来看看表现如何。 生成式AI在B端产品的应用分析© 由 ZAKER 提供 随着今年生成式AI应用的大范围…

ROS1快速入门学习笔记 - 04创建工作环境与功能包

一、定义 工作空间(workspace)是一个存放工程开发相关文件的文件夹。 src:代码空间(Source Space)build: 编辑空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install …

【网络安全】HTTP协议 — 基础

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 学习目标​ 一、万维网的诞生与发展​编辑 1.万维网的诞生与发展 2.HTTP协议诞生与发展 二、网络基础 1.TCP/IP分层传输 1)TCP/IP协议 2)封装与拆封 …

【linux】匿名管道|进程池

1.进程为什么要通信? 进程也是需要某种协同的,所以如何协同的前提条件(通信) 通信数据的类别: 1.通知就绪的 2.单纯的数据 3.控制相关的信息 2.进程如何通信? 进程间通信,成本会高一点 进程间通信的前提,先…

vue【vuex状态管理】

1:vuex是什么: vuex是一个状态管理工具,状态就是指的数据,可以将数据存放到vuex中以供其他组件使用时进行调用 2:应用场景: ①:像用户登录客户端,这个用户的数据需要在多个组件中…

VUE3 ref,props,生命周期

1.--ref属性 1.1代码 1.1.1子表 <template><div class"person"><h1>中国</h1><h2 ref"title2">北京</h2><h3>尚硅谷</h3><button click"showLog">点我输出h2这个元素</button>&l…