自动化工具 新潮测试平台之 Mock

新潮质量保障 for 新潮测试技术 · 2020年02月02日 · 最后由 先生 回复于 2021年06月22日 · 3040 次阅读

该文原创为新潮质量保障技术团队中的 “上进的中年软件测试从业者”,用于技术交流分享

今天要介绍的是测试平台 Mock 的实现。先简单介绍一个我对 Mock 的理解。Mock 英文翻译为虚假的、模仿的;在移动互联网行业中被广泛应用,其有以下特点:

•减少前后端开发过程中的依赖,让前后端分离那么自然。
•提高测试过程中的测试效率,减少构造数据的过程。
•对于稳定系统的模拟,节约成本。

常见可以 Mock 的接口类型包括 Dubbo、MQ 和 HTTP。Dubbo 我没有实际实现过,这里不做介绍。这里我们介绍一下 MQ 和 HTTP 的实现。

MQ/Kafka

我们知道 MQ 的主要组成部分为 NameServer、Producer 和 Consumer。这里我们对 MQ 的概念不做过多介绍,直接介绍实现过程。

模拟 Producer
这里需要 Mock 实现产生消息的过程,步骤如下:
•收集程序端用来消费消息的配置,如 NameServer、Group、Topic、tag 等。
•通过 jpype+MQ 的 jar 包或者 kafka 的 python 包实现。
MQ 代码部分

Kafka 代码部分

模拟 Consumer
一般开发和测试过程中,很少会去关心消息被成功消费以后的事情。这里把 kafka 如何模拟 Consumer 代码贴一下(Python 实现起来还是很简单):

因为目前并没有需求,所以测试平台还没有把 MQ/Kafka 的 Mock 接入进来,但是基本的实现已经写好放在了 Tools 的服务里面,等待调用。

HTTP

HTTP 的 mock 对于 Flask 来说,是比较容易实现的。flask 本身的容错机制是 mock 实现的捷径。在之前的一家公司,因为需要支付场景,所以我们对一名测试人员要求用 flask 实现 Mock 功能,结果就因为这个简单的事情,导致试用期没过。这个场景对我影响很深刻,所以我只要介绍 Mock, 都会拿支付场景举例,让大家便于理解 Mock 的益处。在现在的团队,Mock 功能是小丹实现的,这应该也是她入门 flask 的一个敲门砖,自此一发不可收拾。

实现原理
我们都知道,服务端对于一个不存在的接口请求会报 404, 而 flask 可以对于 404 的错误 code 进行逻辑操作,然后在逻辑操作中,就可以进行匹配和数据的返回。
Form

View

就是这么简单暴力。

感谢大家的耐心阅读。在这特殊的日子里,借用公司的一句话,人不可能独立在世上存活,活着就是一种幸福,所以只要活着就要感谢,感谢家人,感谢公司,感谢客户,谢谢你。

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

我很喜欢文章,也很喜欢最后这句话

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