现在市面上做接口测试的工具很多,比如Postman,soapUI, JMeter, Python+ unittest等等,各种不同的测试工具拥有不同的特色。但市面上的接口测试工具都存在一个问题就是无法完全吻合的去适用没一个项目,比如数据的处理,加密方式的选择,业务逻辑的处理等等,因为自己编写一个框架能够很好的契合自己的项目。本次选用Python+ unittest方案。这个方案需要测试者具有一定的代码能力,通过利用Python自带的PyUnit也就是我们说的:unittest自动化框架,进行接口自动化测试框架的二次开发。
特点:框架稳定,依托于Python强大的库进行各种形式的接口测试,如基于http协议的接口可以利用urlib,urlib2,requests等库进行设计测试。(现在公司的接口基本都是基于http协议的,因此调用这三个库可以完全的实现接口自动化)同时利用JSON库于测试参数进行配置,实现整体测试框架的参数驱动化。
2.框架介绍
整个框架主要分为三层:
- 框架层: 核心层+应用层
- 核心层:为底层的基础代码
- 应用层:为核心层的对外的封装
框架结构图如下:
整个框架结构如上图,console包为整个框架的入口,通过这里来启动整个框架运作。lib和case为框架的核心层和应用层。
lib里面为测试框架中所有的底层代码
包括:断言方法(resultprocess),权鉴,配置文件,自动生成脚本,测试数据的获取,数据类型的转换,加密的处理,接口测试的初始化,发送邮件,生成测试报告等等。
case 包里包括server和testcase两个包,server包里面为接口业务串联,testcase为单个接口测试。
单个接口测试用例示例:
单个server用例示例:
说明:
- import unittest //导入测试框架
- 定义一个继承自unittest.TestCase的测试用例类
- 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
- 定义测试用例,名字以test开头。
- 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
- 调用unittest.main()启动测试
- 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参
data数据包:
log: 主要用于存放脚本运行时生成的log文件
report :用于存放报告文件,为xml文件
case_data :单个接口测试的数据,为json文件
server-data : 接口业务串联的数据,为excel文件
case_data 中json数据格式:
(关于什么是json格式,自己百度)
json数据根据给的上面的这个模板进行配置,注意字段:
test_list :单个接口的多种状态的测试名称,根据该字段列表中的值进行循环生成py的测试脚本
expect :断言的数据
mode :用于判断断言采用何种模式(具体情况参看lib库里的resultprocess.py文件)
R : 用于判断是否返回测试数据
reclye: 用于判断是否循环
replace_filed: 标识符,用于判断哪个参数需要被替换,主要用于业务串联测试
server_data 中excel数据格式:
excel里面的数据根据给的上面的这个模板进行配置,注意字段:
测试内容 :写业务流程
测试文件名:表示自动生成的测试脚本的文件名
测试标题:业务串联测试的用例名
调用文件:填写需要串联的接口,以“ ,"隔开
传递字段: 表示下一个接口需要从上一个接口返回的数据中获取的字段内容
测试报告:
3.框架使用说明:
测试人员根据开发提供的接口文档,对于接口的测试点进行完整的分析,编写测试用例,再把测试用例转换成对应的json和excel文档,启动console里面的start_文件,选择对应的测试模式,进行测试。