接口Mock技术介绍

        相信学习过程序设计的读者朋友们,一定对“桩(Stub)”这个概念并不陌生。它是指用来替换一部分功能的程序代码段。桩程序代码段可以用来模拟已有程序的某些功或者是将实现的系统代码的一种临时替代方法。插桩方法被广泛应用于开发和测试工作中。在接口测试中也需要这种处理方式应用Mock技术,Mock的意思是模拟,就是针对发出的请求,通过某种技术手段来模拟测试对象的行为,返回预先设计的结果。在真实系统并没有实现对应的功能情况下,而只是根据前、后端给出的接口设计规范、示例文档,来设计接口测试用例及实现对应脚本,待系统实现对应的接口功能后再进行替换。从而来实现测试与开发并行或测试先行的目的。目前针对不同的语言有很多现成的Mock工具可以来帮助我们来完成接口测试工作。如:针对Java语言有EasyMock、针对C++语言有GoogleMock等。json(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。易于人阅读、编写、解析,并能有效地提升网络传输效率。鉴于以上特点,JSON被广泛的应用于系统应用开发中。在本章节,笔者将向大家分别介绍如何应用json-server这款Mock工具来实现Restful风格的API,较应用Django、Flask实现这些API,json-server的实现是如此简单、快捷,相信您一定会喜欢上它。

json-server Mock工具实例讲解

json-server介绍

您可以在github上搜索“json-server”获得这款工具的相关项目信息,如图7-1所示。

图7-1  json Server项目的相关说明信息

       如图7-1所示,它可以在不到30秒的时间内在零编码的情况下完整模拟REST API,适合前端开发团队人员小于3人,需要快速后端原型设计和模拟。

json-server安装

        首先,您需要下载Node.js,鉴于笔者是64位的Windows 10操作系统,这里下载“10.15.3”

版本,如图7-2所示。

图7-2  Node.js下载界面信息

       “node-v10.15.3-x64 .msi”文件下载以后,单击该文件,开始安装node.js,如图7-3所示。

图7-3  Node.js Setup界面信息

       单击“Next”按钮,选择“I accept the terms in the License Agreement”复选框,如图7-4所示。

图7-4  用户许可相关界面信息

       单击“Next”按钮,选择安装存放路径,这里我们不做更改,如图7-5所示。

图7-5  存放路径相关界面信息

单击“Next”按钮,选择要安装相关功能,这里我们仍然不需要做任何更改,如图7-6所示。

图7-6  用户自定义安装相关界面信息

       单击“Next”按钮,进入准备安装Node.js界面,如图7-7所示。

图7-7  准备安装相关界面信息

       单击“Install”按钮,则开始安装Node.js,安装完成后,将会出现图7-8所示界面。

图7-8  安装完成相关界面信息

       单击“Finish”按钮,完成Node.js的安装过程。为了验证其是否正确安装,可以输入“node –version”命令,来查看其版本信息,如图7-9所示。

图7-9  Node.js版本信息

        NPM是随同Node.js一起安装的包管理工具,使用它能够解决Node.js代码部署上的很多问题,我们在后续安装json-server时也会使用到它,所以同样要验证一下npm是否正确安装,可以应用“npm –v”命令来查看其对应的版本信息,如图7-10所示。

图7-10  npm版本信息

        由图7-9和图7-10,我们知道Node.js和npm都已经成功安装,接下来,我们就可以使用“npm install -g json-server”命令来装json-server了,如图7-11所示。json-server安装完成后,您可以使用“json-server -h”来查看其是否安装成功,若出现对应的帮助信息,则说明其被正确的安装,如图7-12所示。

图7-11  安装json-server相关命令信息

图7-12  json-server相关帮助信息

json-server应用简要说明

        在第5章,笔者详细的向读者朋友们介绍了如何应用Django REST Framework接口实现

Restful风格的接口,在本章节我们将应用json-server实现同样的Restful风格的接口。

       这里,笔者准备了一个Json格式文件,即:mytest.json文件,其内容如下所示:

{

    "books": [{

             "id": 1,

             "title": "软件性能测试与LoadRunner实战教程",

             "author": "于涌"

         },

         {

             "id": 2,

             "title": "精通移动App测试实战",

             "author": "于涌"

         }

    ],

    "comments": [{

             "id": 1,

             "content": "性能测试图书",

             "postId": 1

         },

         {

             "id": 2,

             "content": "App测试图书",

             "postId": 2

         }

    ],

    "press": {

         "name": "出版社"

    }

}

       从上面的JSON文件,大家可以看到主要包含3类信息,即:图书、评论和出版社信息。

在第5章的案例三,我们用10几页来描述如何实现基于JSON文件增删改查的相关操作。这里,我们想应用json-server来实现基于该JSON文件的增删改查接口操作。那么,我们应该怎样做呢?

       首先,创建一个Python项目,这里我们把该项目命名为“APITest”。在该工程中,新建一个JSON文件,即:mytest.json文件,文件内容就是上面的JSON文件内容,如图7-13所示。

图7-13  APITest项目及mytest.json文件内容

       接下来,您可以通过使用“json-server --watch C:\Users\Administrator\PycharmProjects\

APITest\mytest.json”命令来运行json-server,这样就创建了一个基于mytest.json数据文件内容的Restful增删改查接口服务了,如果成功的话,将显示如图7-14所示界面信息。

图7-14  启动json-server服务

       如图7-14所示,您可以通过在浏览器中输入“http://localhost:3000”来访问其为我们创建的相关接口,如图7-15所示。

图7-15  基于mytest.json数据文件的json-server Home页面信息

       如图7-15标号为“2”的区域,我们可以看到json-server支持GET、POST、PUT、PATCH、DELETE和OPTIONS等HTTP方法。标号为“1”的区域,您可以单击对应的链接查看对应mytest.json文件内数据信息。这里以查看图书信息为例,单击“/books”链接,将出现图7-16所示界面信息。

图7-16  mytest.json文件的图书相关信息

       您可以通过使用“http://localhost:3000/books?id=1”或者“http://localhost:3000/books/1”来查找或者说过滤出对应id的图书信息,如图7-17所示。

图7-17  过滤查找出id为1的图书相关信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析C#异步编程:await 关键字背后的实现原理

在C#中,async 和 await 关键字用于编写异步代码。本文将详细介绍 await 的实现原理,包括状态机的生成、回调函数的注册和触发等关键步骤。 1. 异步方法的基本概念 在C#中,async 关键字标记一个方法为异步方法,而 await 关键字用于…

【机器学习】SVM支持向量机(一)

介绍 支持向量机(Support Vector Machine, SVM)是一种监督学习模型,广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点,并且尽可能地最大化离该超平面最近的数据点(支持向量…

Unity功能模块一对话系统(1)前置准备

也许你也曾被游戏中的对话系统深深吸引,那些精心设计的对白、鲜活的角色配音、甚至是简单的文字对话,往往能让玩家产生强烈的代入感和情感共鸣。如果你正在开发一款游戏,或者计划为你的项目加入一个引人入胜的对话系统,那么 Unity…

upload-labs关卡记录10

白名单,可以看到已经进行了限制,只能上传这三种后缀的文件,先试一试MIME绕过: 果然不行:观察到是post型,试一试00绕过:没找到路径,绕过失败。 看源码吧: $is_upload f…

专业140+总分410+南京大学851信号与系统考研经验南大电子信息通信集成电路,真题,大纲。参考书。

本人本科中等211,离保送本校差一点,考研前纠结本校还是追求更高目标,和家人聊了自己的想法,感谢父母对我的支持,坚定报考南大的目标,最终专业851信号与系统140,总分410顺利被南京大学录取&#…

《机器学习》——KNN算法

文章目录 KNN算法简介KNN算法——sklearnsklearn是什么?sklearn 安装sklearn 用法 KNN算法 ——距离公式KNN算法——实例分类问题完整代码——分类问题 回归问题完整代码 ——回归问题 KNN算法简介 一、KNN介绍 全称是k-nearest neighbors,通过寻找k个距…

Spring Boot 学习笔记

学习代码第一步&#xff1a;如何写 Hello world &#xff1f; 1、新建项目 新建一个 Maven Java 工程&#xff0c;在 pom.xml 文件中添加 Spring Boot Maven 依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spri…

基于python的扫雷游戏

游戏 游戏目标&#xff1a; 揭开所有非地雷的格子。 如果揭开地雷&#xff0c;游戏失败。 使用标记功能&#xff08;&#x1f6a9;&#xff09;来标记可能的地雷位置。 格子类型&#xff1a; 空白格子&#xff1a;表示周围没有地雷。 数字格子&#xff1a;显示周围 8 个格子…

【K8S系列】深入解析K8S服务的无状态与有状态

在容器编排领域&#xff0c;Kubernetes&#xff08;K8S&#xff09;无疑是占据主导地位的工具。它提供了强大的功能来管理和部署容器化应用程序&#xff0c;其中服务分类是理解和有效使用K8S的关键。K8S中的服务主要分为无状态服务和有状态服务&#xff0c;这两种类型在基础概念…

Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节

KMS是Kemmel Mode Setting的缩写&#xff0c;内核显示模式设置。它主要负责显示的控制&#xff0c;包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器&#xff0c;在DRM里有多个显存&#xff0c;通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…

3_TCP/IP连接三次握手与断开四次挥手

TCP/IP 通信是网络通信的基础协议&#xff0c;分为以下主要步骤&#xff1a; 1、建立连接&#xff08;三次握手&#xff09; 目的&#xff1a;保证双方建立可靠的通信连接。 过程&#xff1a; 1>客户端发送 SYN&#xff1a;客户端向服务器发送一个 SYN&#xff08;同步&…

SpringCloud 系列教程:微服务的未来(三)IService接口的业务实现

本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作&#xff0c;帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询&#xff0c;还是复杂的多表联动&#xff0c;甚至是大数据量的批量操作…

kubernetes学习-集群搭建部署(一)

一、开三台虚拟机进行试验&#xff08;centos7) 1、初始操作 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sudo sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap sudo swapoff -a # 临时 s…

【AUTOSAR 基础软件】Can模块详解(Can栈之驱动模块)

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中Can模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码三个维度来帮读者清晰的认识和了解Can驱动软件模块。文中涉及的ISOLAR-AB配置以及生成的ARXML均依托于ETAS工具链&#xff0c;…

Vite内网ip访问,两种配置方式和修改端口号教程

目录 问题 两种解决方式 结果 总结 preview.host preview.port 问题 使用vite运行项目的时候&#xff0c;控制台会只出现127.0.0.1&#xff08;localhost&#xff09;本地地址访问项目。不可以通过公司内网ip访问&#xff0c;其他团队成员无法访问&#xff0c;这是因为没…

【maven】什么是坐标(依赖)继承与模块、web项目启动访问

目录 2. Maven 基础 2.1 坐标 2.1.0 什么是坐标&#xff08;依赖&#xff09; 2.1.1 获得坐标 2.1.2 使用坐标 2.1.3 依赖范围 2.1.4 依赖传递 2.1.5 依赖冲突&调节原则 2.1.6 依赖排除 2.1.7 使用第三方jar包 2.2 继承与模块 2.2.1 概述 2.2.2 分析 2.2.3 实…

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…

VS Code AI开发之Copilot配置和使用详解

随着AI开发工具的迅速发展&#xff0c;GitHub Copilot在Cursor、Winsuf、V0等一众工具的冲击下&#xff0c;推出了免费版本。接下来&#xff0c;我将为大家介绍GitHub Copilot的配置和使用方法。GitHub Copilot基于OpenAI Codex模型&#xff0c;旨在为软件开发者提供智能化的代…

meshy的文本到3d的使用

Meshy官方网站&#xff1a; 中文官网&#xff1a; Meshy官网中文站 ​编辑 Opens in a new window ​编辑www.meshycn.com Meshy AI 中文官网首页 英文官网&#xff1a; Meshy目前似乎还没有单独的英文官网&#xff0c;但您可以在中文官网上找到英文界面或相关英文资料。 链…

快速打造智能应用:从设计到上线的全流程指南

随着人工智能技术的快速发展&#xff0c;如何将大模型技术转化为实际应用成为了各行业关注的焦点。本文将以一个经典的 RAG&#xff08;检索增强生成&#xff09;知识问答系统为例&#xff0c;详细介绍从智能体设计到最终应用部署的全流程。通过结合阿里云的魔笔低代码平台和丰…