不要问我为什这么晚发布,这可能是我有史以来加班最晚的时候了,啊啊啊

前言

我们之前也说过进行接口自动化建设主要是为了自动化测试服务端的逻辑,客户端与后端交互使用的主要协议的就是http协议,这也是为什么我在开篇就和大家强调过相关的基本功的学习,学习这些基本功能不仅是为了应付面试,更是为了当你开始迈入职场进行工作时,能够很快的上手。

在关于接口自动化建设这个部分,我们可以分为两种面试场景:
(1)一种是当你有一定工作经验在进行跳槽的时候,如果你的简历中提到了这个部分,那么你一定会被问到这样的问题“讲一下你们是如何进行接口自动化建设的”,其实这个问题也适用于那些“在暑期进行过实习,实习过程中刚好做了接口自动化相关的工作内容”的同学;

(2)另一种是针对应届生,也没有相关的实习经验,那么其实你没有一个很好的契机在简历上体现你做过接口自动化相关的工作,也就是说没有相关的话题,此时你需要在自我介绍的时候提及你对测试开发工作内容的理解,然后带出接口自动化建设部分的话题,并提到你具备进行相关自动化建设的基本功,并在简历上体现你学过相关的框架,如在java体系里面测试框架主要包含了junit和testng,从而给面试官一个契机来考察你在这方面所具备的技能储备。

本章内容概要

那么接下来我先用一个最小的demo来展示展示接口自动化是怎么做的,然后再总结一下在面试的过程中我们可以使用的一些思路。通过这个demo,希望给大家一个直观的印象。不需要大家有太多的理论知识,我相信大家在了解这个demo之后就知道为什么我在专栏的前面部分为何强调大家的基本功。这个demo主要包含了以下几个部分:
(1)我会使用python的flask框架搭建一个服务器,在其中实现get和post接口,让大家对服务端的实现有一个初步的认识
(2)我会使用java进行接口自动化代码的编写,其中使用到的测试框架是testng,并给大家展示测试报告的生成;
(3)第三步,会给大家展示如何把自动化测试过程和jenkins进行结合,从而达到持续集成的目的。

那么首先是环境准备:(1)IEDA安装,现在公司里面idea是最常使用开发工具(2)python的安装,我这边安装是python 2.7版本,大家可以安装最新的3.0版本的(3)jenkins的安装。这些工具的安装过程大家可以自行百度,因为我使用的mac,所以即是写了可能对大家也不适用,安装的部分就靠大家自动百度了。(4)postman这个接口测试工具的安装。

Server端开发

接下来我们来用python的Flask框架搭建一个简单的服务器,Flask的详细介绍大家可以参考其官方网站:https://dormousehole.readthedocs.io/en/latest/。
这里我就大家简单介绍一下:上一节我们也说了框架的主要作用,把大多数人需要的功能进行抽象提炼,使用者只要遵循框架的规范就能够简单的使用相关的功能。如果大家学习过计算机网络,那么一定知道信息在网络传输的过程中,首先要经过物理层(bit)、数据链路层(mac 帧)、网络层(ip)、传输层(TCP)、应用层(http), 而我们进行服务端的开发就意味我们要写一个24小时不宕机的应用程序,监听相应的TCP端口,并解析相应的http报文,然后解析其中语义,唤起相应的处理程序,处理完成之后返回客户端想要的信息。其实再简单点来说,Flask框架能帮我们解析客户端的http请求,并能帮我们封装http响应给客户端,我们只需要专注相应处理逻辑的实现即可。

使用flask要先安装相应的package,这样我们才能引用,如果你使用IDEA进行,创建的时候选择 python项目,然后可以选择从template中进行创建,就能够导入使用flask需要的依赖了。
然后我们在项目中写一个main.py,执行这个py文件,可以看到一个简单的server就运行了起来,这个server会监听8080端口上的请求,并返回一个hello world字符串。


IEDA配置

图2 模版选择

简单代码

控制台

接下来我们可以就可以用postman对该接口进行测试,通过postman能够快速到熟悉和学习http的相关知识点,在日常测试中使用的时候其实只需要熟悉http的请求报文和http响应报文就可以了,具体需要注意的部分我在下图进行了标注。

测试代码开发

接下来,我们就要着手编写相应的接口测试代码了,我们使用的是java开发语言,底层的测试框架使用的testng。前面已经说过相比python,java比较难以上手,而且到后续想要开发大型的测试平台 java依旧是我们优先选择的开发语言,所以在学校的时候,希望大家能够静下心来学习相关的知识。

关于testng的介绍,具体细节可以去官网上查看:https://testng.org/doc/ ,我这里后期也会上传了一个testng的电子版的书籍,但是是英文版的,没有找到中文版的,可以凑合着看,这里我主要是带大家做一个简单的入门。

testng入门

在maven项目中引入testng的依赖之后,就可以通过使用相关的注解来使用testng了。
依赖引入:在开发过程中如