专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Mock接口的实现介绍 mockito mock接口

ins518 2024-10-06 10:21:50 技术文章 10 ℃ 0 评论

简介

Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个模拟的对象来创建以便测试的测试方法。

而Mock接口,就是做一个临时用的假接口。

应用场景

mock测试场景主要是以下这些:

  • 测试接口中需要依赖第三方接口返回值进行逻辑处理,例如银行的支付接口;
  • 模拟异常数据返回,例如需要返回特殊字符、不同长度、类型格式等内容;
  • 前后端开发并行工作调试,后端接口未完成时,前端调用Mock数据进行调试;
  • 隔离环境,保证数据安全和正确性,对于POST、PUT、DELETE等请求进行隔离,防止修改数据出现其他未知错误。

我作为一个测试工程师,学习mock主要是因为工作中有需要使用。使用场景大概描述就是这样,一个后端项目,使用敏捷开发,我主要是做接口测试,需要做接口自动化。

架构要求每个迭代周期在开发交付接口前,前端和测试都对mock接口做调试和验证,在开发交付接口前测试需要交付有效的测试脚本,每次更新代码打包部署后都跑测试脚本。开发完成一个接口就用真接口替换一个mock接口。这样就能做到实时验证,及时修改问题。

而前端和后端都没精力做mock接口,就只有测试自己接这部分工作了。

如果你想往接口自动化这方面发展一下,我个人建议学习一下mock还是挺有帮助的。

Mock常用的几种方式

Mock的方法很多,这里罗列几种比较常用的:

  • fiddler/Charles工具
  • Mock Server-Moco
  • 网上Mock平台

后面就介绍一下Mock Server-Moco这种方式。

Mock Server-Moco说明

Moco是一个简单搭建模拟服务器的框架(工具),可以模拟http、https、socket等协议。它是基于Java开发的开源项目,Github地址:https://github.com/dreamhead/moco。

Moco的实现原理比较简单,它会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起的请求满足某个条件时,就会返回指定的响应数据。

这里要注意,满足的条件和响应的数据,这两者的限制其实挺大的,这也就是mock仅仅是mock,无法取代真正的接口的原因。

Mock Server-Moco环境搭建

首先要在本地配置jdk环境,最好是jdk1.8或者更高的版本。jdk环境就不在这里展开了,网上帖子很多。

然后要下载一个jar包,地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner

现在最新的版本是1.3.0,具体可以看当时的最新版本。

Mock Server-Moco启动命令

启动比较简单,直接在dos窗口输入命令就行,命令如下:

java -jar <path-to-moco-runner> http -p <monitor-port> -c <configuration-file>
java -jar <path-to-moco-runner> http -p <monitor-port> -g <configuration-file>
  • path-to-moco-runner:jar包的路径
  • monitor-port:http服务监听的端口
  • configuration-file:配置文件路径

两种启动方式主要是-c和-g后面跟的文件有点区别,后面会具体介绍。

Mock Server-Moco请求

创建一个json文件,名为musicName.json,内容如下:

[
    {
        "description": "获取歌曲名",
        "request": {
            "uri": "/current"
        },
        "response": {
			"text":"Canon"
        }
    }
]

启动mock服务:

调用结果:

在创建一个json文件,配置一个put类型得接口,文件名为startPlay.json,内容如下:

[
    {
        "description": "开始播放",
       	 "request": {
            "uri": "/playMusic",
          	"method": "put",
						"headers": {
                "Content-Type": "application/json"
           			 },
          	"json": {
              "state": 1}
       		 },
        "response": {
						"headers": {
                "Content-Type": "application/json;charset=UTF-8"
            		},
						"json":{
								"error": 0,
								"state": 1
								}
        		}
    		}
]

启动mock服务:

调用接口:

如果你不想一个一个接口启动,想一次性将所有接口都启动,可以配置一个这样的config.json文件:

[
    {"include": "musicName.json"},
    {"include": "startPlay.json"}
]

然后通过这样的命令启动:

这个时候config.json里的接口都能够正常调用到。

总结

mock服务可以配置的接口类型和参数非常丰富,但是没有数据处理的能力。用的好,在敏捷开发中可以起到非常大的帮助。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表