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

乾行 for 点点点 · 2018年11月21日 · 最后由 乾行 回复于 2018年11月23日 · 2663 次阅读

背景

测试过程中,遇到一些接口具备多种功能(不满足单一职责,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 服务(不能根据入参返回不同值)
部分知识公开了就贬值了,文中知识一样。

乾行 回复

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

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

    "msg": "请求失败"
}
乾行 回复

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

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

陈恒捷 回复

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

arrow 回复

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册