多平台统一管理软件接口,如何实现多平台统一管理软件接口
509
2023-05-08
本文目录一览:
当需要调用接口来编写测试用例的时候,此时该接口并没有被实现,这个时候我们就可以用Mock框架来模拟一个接口出来。
使用Mock模拟接口以下功能:
编写一个Json文件,接口所有的信息都配置在该json文件中。
把Moco框架的jar包和上面编辑好的Json文件放在同一个文件夹中。
在cmd命令行或者PyCharm的命令行终端执行启动命令。
Moco服务启动后,我们可以使用Requests库请求接口,也可以用浏览器接口。
浏览器访问接口:
我们主要是看Json文件怎么写,其他步骤和上面练习一样。
1)、没有参数的get请求
2)、有参数的get请求
说明:请求地址为: api/moco/get/param/demo?name=xiaomingage=18
1)、没有参数的post请求
提示:POST请求就不能用浏览器进行查看了。只能用Request库或者JMeter,Postman等进行查看。(能进行接口调用的工具都可以)
2)、有参数的post请求
调用接口查看结果。
使用的是 request 中的 cookies 属性。
1)、get请求
调用接口查看结果。
2)、post请求
调用接口查看结果。
使用的是 request 中的 headers 属性。
Header 是添加请求头信息,关于请求头信息get请求和post请求都是一样的。
调用接口查看结果。
重定向使用的是和 request 同级的 redirectTo 属性。
使用浏览器进行测试就可以。
Json文件的配置属性说明:
像我们上面练习过的Json文件配置,所有的数据值是固定的,
如: description 、 request 、 response 、 redirectTo 等这些都是固定的,不能修改,修改可能连Moco服务都启动不来。
还有 request 的属性值,如: uri 、 method 、 cookies 、 headers ,也是必须这样写的。
还有GET请求传递参数用 queries 属性,POST请求传递参数用 forms 和 json 属性都可以。(PUT,DELETE请求同Post请求。)
Moco框架原理:
就是把所有接口的数据,包括发送请求的所有数据和返回结果的所有数据,以Json数据格式进行编写。
把这些数据放入Moco框架提供的HTTP或者HTTPS的服务上,就实现了接口数据的模拟。
在使用的时候,我们只要按照json文件中接口配置的信息进行请求即可,如果调用接口传递的数据和Json文件中接口编写要接收的数据不一致,则无法请求成功。
作为一个前后端分离模式开发的团队,我们经常会看到这样的场景:前端开发和后端开发在一起热烈的讨论“你这接口参数怎么又变了?”,“接口怎么又不通了?”,“稍等,我调试下”,“你再试试..."。
那能不能写好接口文档,大家都按文档来开发?很难,因为写文档、维护文档比较麻烦,而且费时,还会经常出现 API 更新了,但文档还是旧的,各种同步不一致的情况,从而耽搁彼此的时间。
之前我们团队也遇到了同样的问题,那么作为研发团队的负责人,我是如何带领团队解决这个问题的呢?
方法其实很简单,如果能做到让写文档/维护文档这件事情的短期收益就能远高于付出的成本,那么所有问题都能迎刃而解,开发人员就会非常乐意去写接口文档。
要做到写文档和及时维护文档的短期收益就能远高于付出的成本,无非两个方向:
鉴于此,我们设想如果有一款工具做到以下这些是不是就非常爽了?
总结下来,我们需要的就是这么一款工具:
为此,我们几乎尝遍了市面上所有相关的工具,但是很遗憾,没有找到合适的。
于是,我们自己实现了一个Postman + Swagger + RAP + JMeter
这个工具就是 Apifox,经常很长一段时间不断更新迭代后,我们基本上完全实现了最初的设想,几乎完美解决了最开始遇到的所有问题,在公司内部大受欢迎。并且也形成了我们自己的最佳实践。
没错,现在我们已经将Apifox产品化对外服务了,你们团队也可以直接使用Apifox了。
官网:www.apifox.cn
Apifox = Postman + Swagger + Mock + JMeter
Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台。
通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口测试就可以直接使用,无需再次定义;接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!
节省研发团队的每一分钟!
如果你认为 Apifox 只做了数据打通,来提升研发团队的效率,那就错了。Apifox 还做了非常多的创新,来提升开发人员的效率。
通常一个接口会有多种情况用例,比如 正确用例 参数错误用例 数据为空用例 不同数据状态用例。定义接口的时候定义好这些不同状态的用例,接口调试的时候直接运行,非常高效。
可以独立定义数据模型,接口定义时可以直接引用数据模型,数据模型之间也可以相互引用。同样的数据结构,只需要定义一次即可多处使用;修改的时候只需要修改一处,多处实时更新,避免不一致。
使用 Apifox 调试接口的时候,系统会根据接口文档里的定义,自动校验返回的数据结构是否正确,无需通过肉眼识别,也无需手动写断言脚本检测,非常高效!
Apifox 自动校验数据结构
设置断言:
Apifox 设置断言
运行后,查看断言结果:
先放一张图对比下 Apifox 和其他同类工具 零配置 mock 出来的数据效果:
Apifox Mock 数据结果对比同类工具
可以看出 Apifox 零配置 Mock 出来的数据和真实情况是非常接近的,前端开发可以直接使用,而无需再手动写 mock 规则。
「Apifox 如何做到高效率、零配置生成非常人性化的 mock 数据」
Apifox 项目可“在线分享” API 文档,分享出去的 API 文档可设置为公开或需要密码访问,非常方便与外部团队协作。
体验地址:https://www.apipark.cn/s/ce387612-cfdb-478a-b604-b96d1dbc511b/http/5041285
根据接口模型定义,自动生成各种语言/框架(如 TypeScript、Java、Go、Swift、ObjectiveC、Kotlin、Dart、C++、C#、Rust 等)的业务代码(如 Model、Controller、单元测试代码等)和接口请求代码。目前 Apifox 支持 130 种语言及框架的代码自动生成。
更重要的是:你可以通过自定义代码模板来生成符合自己团队的架构规范的代码,满足各种个性化的需求。
接口调试
Apifox 多种主题色可选
Mockito是一个开源mock框架;Junit是一个Java语言接口mock工具对比的单元测试框架。
junit的测试用例接口mock工具对比:
public class MainTstObjectJMockTest {
private Mockery context = new JUnit4Mockery();
private MayMockObject mayMockObject;
private MainTstObject mainTstObject;
@Before
public void setUp() {
this.mayMockObject = this.context.mock(MayMockObject.class); // Mock了外接接口
this.mainTstObject = new MainTstObject();
this.mainTstObject.setMayMockObject(this.mayMockObject);
}
@Test
public void process() {
final String str1 = "Mockito返回字符串。";
final String str2 = "Mockito返回字符串。";
this.context.checking(new Expectations() {
{
oneOf(mayMockObject).getString(str2);
will(returnValue("")); // Mock返回值
// allowing(mayMockObject).getString(with(any(String.class)));
// will(returnValue(""));
}
});
String ret = this.mainTstObject.create(str1, str2);
Assert.assertEquals(ret, str1);
}
@After
public void tearDown() {
}
}
Mockito的测试用例:
public class MainTstObjectMockitoTest {
// 指定Mock的对象
@Mock
private MayMockObject mayMockObject;
private MainTstObject mainTstObject;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this); // 声明测试用例类
this.mainTstObject = new MainTstObject();
this.mainTstObject.setMayMockObject(this.mayMockObject);
}
@Test
public void process() {
String str1 = "Mockito返回字符串。";
String str2 = "Mockito返回字符串。";
Mockito.when(this.mayMockObject.getString(str2)).thenReturn(""); // Mock返回值
String ret = this.mainTstObject.create(str1, str2);
Assert.assertEquals(ret, str1);
}
@After
public void tearDown(){
}
}
junit和Mockito在用法上的一些区别:
1、对于要Mock的对象,JMock要显示指出来【this.mayMockObject = this.context.mock(MayMockObject.class);】;
而Mockito只是简单加上注释【@Mock】,然后声明下测试用例类即可【MockitoAnnotations.initMocks(this);】。
2、对于方法的模拟,junit显得更加复杂了【this.context.checking(new Expectations() {
{
oneOf(mayMockObject).getString(str2);
will(returnValue(""));
}
});】
而Mockito只要简单的一行代码就行【Mockito.when(this.mayMockObject.getString(str2)).thenReturn("");】。
从上可以看出,Mockito的代码行更少,更加简洁易记!
另外需要注意的是:junit只能Mock接口,也就是上面的例子中【MayMockObject】只能为接口,不能为实体类;而Mockito就没有这个限制。
Mock介绍
1.找到要替换的对象:我们需要测试的是visit_ustack这个函数,那么我们需要替换掉send_request这个函数。
2.实例化Mock类得到一个mock对象,并且设置这个mock对象的行为。在成功测试中,我们设置mock对象的返回值为字符串“200”,在失败测试中,我们设置mock对象的返回值为字符串"404"。
3.使用这个mock对象替换掉我们想替换的对象。我们替换掉了client.send_request
4.写测试代码。我们调用client.visit_ustack(),并且期望它的返回值和我们预设的一样。
上面这个就是使用mock对象的基本步骤了。在上面的例子中我们替换了自己写的模块的对象,其实也可以替换标准库和第三方模块的对象,方法是一样的:先import进来,然后替换掉指定的对象就可以了。
Mockrunner用在J2EE环境中进行应用程序的模拟测试。它不仅支持Struts actions,servlets,过滤器和标签类,还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序。
Mockrunner扩展了JUnit并模拟了必要的行为,而无需调用实际的基础结构。它不需要正在运行的应用程序服务器或数据库。此外,它不会调用web容器或Struts ActionServlet。它非常快速,使用户可以在测试的所有步骤中操纵所有涉及的类和模拟对象。它可以用于为基于J2EE的应用程序编写非常复杂的单元测试,而不会产生任何开销。Mockrunner不支持任何类型的容器内测试。
Mockrunner不会读取任何配置文件,例如web.xml或struts-config.xml。您可以使用Mockrunner API指定所有参数。因此,可以将servlet,过滤器,标签和Struts动作作为可重用组件进行测试,而不管您在一个或另一个应用程序中使用的设置如何。无法测试配置文件中的定义。如果要这样做,可以将StrutsTestCase用于基于Struts的应用程序或Cactus。
Mockrunner支持Java版本从1.3到1.6以及J2EE 1.3,J2EE 1.4和JavaEE5。尚不支持EJB 3.0。Mockrunner支持Struts版本1.1、1.2和1.3。
下载地址:Mockrunner download | SourceForge.net
最后:【可能给你带来帮助的教程】软件测试最新自学教程
前后端经常会存在接口对接,为减少相互间的强依赖,双方能并行开发。接口的模拟测试就显得尤为关键。一些对外的接口,外部环境往往不可控,在开发、测试阶段为了减少其影响,通过接口模拟测试能减少很多不必要的麻烦。
本文将介绍一款轻量级的java mock server工具,解决以上的常见问题。
moco是一个java实现,轻量级的,开源的接口模拟测试工具,可以通过jar独立部署。简单json配置,即可实现接口的请求响应接口模拟。
官方地址:
下载官方Standalone Moco Runner文件到本地。
下载完成对应目录下可以moco-runner-0.12.0-standalone.jar文件
对应目录下新增foo.json文件以下内容。
以上定义了全局接口的返回信息。
以下命令运行moco server
访问http://localhost:12306 ,将看到"Hello, Moco"返回信息。
以上就完成了moco server的接口完整测试。是不是很easy。接下来我们再看看,比较常用的http restful的配置方式。
一个项目往往有很多接口,moco的include属性支持多个配置文件的引用,通过不同文件的配置实现接口的分组定义,更便于接口管理维护。
首先定义一个全局配置文件globalconfig.json(名称可以任意取)
上面使用include属性,引入相关子文件定义。
注意:若使用include的文件定义,在启动moco server的时候,配置文件前的启动参数是 -g ,而不是一开始介绍的 -c 参数,否则启动将包include字段识别错误。
openApi.json文件内容如下
上面定义了接口测试1、接口测试2两个接口。每个接口可以配置他的request和response信息。在接口测试时,必须request选项满足时,对应response才返回。
更多属性配置可参见官方文档。
另外moco server对配置文件的变更是实时检测的,以下控制界面可见openApi.json发生的change变更。这在测试联调时特别方便,一种返回case测试完后想改返回值,只需变更响应配置文件,无需来回重启moco server。
通过使用moco server,是否感觉特别得简单、实用、高效?喜欢的coder们赶快使用起来吧!提高效率,珍惜生命!
关于接口mock工具对比和后端mock接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 接口mock工具对比的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于后端mock接口、接口mock工具对比的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~