接口测试 [黑魔法] MOCK 多用途接口的一点小技巧

qianxing for 点点点 · November 21, 2018 · Last by qianxing replied at November 23, 2018 · 1457 hits

背景

测试过程中,遇到一些接口具备多种功能(不满足单一职责,omz)。在Java应该程序中调用该接口两次,但是两次调用的间隔时间较短,来不及手动修改MOCK平台的数据。
1.第一次请求,返回结果如下:

{
"data": {
"msg": "请求成功",
"reqId": "61ea110d-a6ae-47f1-ae83-5b5f22da5bd8"
},
"result": "1",
"code": "",
"msg": ""
}

2.第2次调用接口,返回结果如下:

{
"data": {
"seqId": "DI-5fa63f7d-41cd-4af2-b871-91309a13d26e",
"seqNo": "123",
"userId": "192801",
"amount": 20000
},
"result": "1",
"code": "",
"msg": ""
}

备注:data字段为JAVA语言中的MAP对象。

mock数据设置

针对上述问题,其实存在一个很简单的解决方案,将MOCK数据设置如下:

{
"data": {
"msg": "请求成功",
"reqId": "61ea110d-a6ae-47f1-ae83-5b5f22da5bd8",


"seqId": "DI-5fa63f7d-41cd-4af2-b871-91309a13d26e",
"seqNo": "123",
"userId": "192801",
"amount": 20000
},
"result": "1",
"code": "",
"msg": ""
}

便可满足一次设置mock数据,满足两次调用的测试要求。

该黑魔法原理

Map对象支持添加任意键值,就这么简单!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

上学的时候口语考试,老师出了几个题目,学生自己准备内容;
然后我出了个主意,把几个题目窜成了一个文儿,一个文儿里面这些都涉及到了全部题目
老师一听就懂了;糊弄人的骗术

hellohell 回复

文中的东西没有什么技术含量,但是当开发、测试在工作过程中遇到这样的问题,不一定能解决哟

我还以为是什么黑科技。。
一般的Mock平台都支持根据参数返回不同的响应吧,实现起来也很简单

arrow 回复

mock平台只是借助一个公共服务提供的简单mock服务(不能根据入参返回不同值)
部分知识公开了就贬值了,文中知识一样。

qianxing 回复

你的这种只适用于 字段都不相同的特殊情况,如果两次有相同的字段,但是值不同,你的方法就冲突了

{
"msg": "请求成功",

"msg": "请求失败"
}
qianxing 回复

mock平台只是借助一个公共服务提供的简单mock服务(不能根据入参返回不同值)

建议看看 easy-mock 或 mockjs ,现在 mock 已经可以通过 js 语法做到简单的根据入参返回不同值了,而且很多场景下都非常需要。

陈恒捷 回复

不是http接口,Java远程调用,测试过程中依赖其他平台一个简易的mock功能。

arrow 回复

是的,这个是联调测试过程中走正常流程。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up