该文原创为新潮质量保障技术团队中的 “上进的中年软件测试从业者”,用于技术交流分享
今天要介绍的是测试平台 Mock 的实现。先简单介绍一个我对 Mock 的理解。Mock 英文翻译为虚假的、模仿的;在移动互联网行业中被广泛应用,其有以下特点:
•减少前后端开发过程中的依赖,让前后端分离那么自然。
•提高测试过程中的测试效率,减少构造数据的过程。
•对于稳定系统的模拟,节约成本。
常见可以 Mock 的接口类型包括 Dubbo、MQ 和 HTTP。Dubbo 我没有实际实现过,这里不做介绍。这里我们介绍一下 MQ 和 HTTP 的实现。
我们知道 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 的 mock 对于 Flask 来说,是比较容易实现的。flask 本身的容错机制是 mock 实现的捷径。在之前的一家公司,因为需要支付场景,所以我们对一名测试人员要求用 flask 实现 Mock 功能,结果就因为这个简单的事情,导致试用期没过。这个场景对我影响很深刻,所以我只要介绍 Mock, 都会拿支付场景举例,让大家便于理解 Mock 的益处。在现在的团队,Mock 功能是小丹实现的,这应该也是她入门 flask 的一个敲门砖,自此一发不可收拾。
实现原理
我们都知道,服务端对于一个不存在的接口请求会报 404, 而 flask 可以对于 404 的错误 code 进行逻辑操作,然后在逻辑操作中,就可以进行匹配和数据的返回。
Form
View
就是这么简单暴力。
感谢大家的耐心阅读。在这特殊的日子里,借用公司的一句话,人不可能独立在世上存活,活着就是一种幸福,所以只要活着就要感谢,感谢家人,感谢公司,感谢客户,谢谢你。