最近在做公司项目的自动化接口测试,在现有几个小框架的基础上,反复研究和实践,搭建了新的测试框架。利用业余时间,把框架总结了下来。
AIM框架介绍
AIM,是Automatic Interface Monitoring的简称,即自动化接口监测。是一种基于python unittest的自动化接口测试框架。
设计思想
框架根据python语言的特点,结合了面向对象和面向函数编程。
以高效编程为主要目的,避免为了封装而封装。轻配置,重编码。
接口测试的主要处理对象是参数。如果完全进行数据与代码的分离,就会造成变量,传参的冗余,降低编程效率。
于是从不做数据与代码分离出发,对于需要复用的参数,提取到类之外,视需要进行数据与代码的分离。
做到有的放矢。兼顾效率和复用性,迭代分离,更具实用性。
目录结构
case:测试用例
common:公共函数,全局变量
config:配置路径等
data:数据文件
result:测试结果
util:工具类
run.py:用例执行入口
run_mail.py:执行后自动发送邮件入口
case
BaseCase
所有Case的基类。
封装了requests库的post和get函数req,用于发送请求。
调用assertEqual等方法,封装了用例的断言。比如检查接口返回flag,检查接口状态200,检查值相等。
项目Case
测试系统的用例。按模块分别建立文件编写脚本。
Env.py:环境配置,包括url处理,登录对象login实例(用户名、密码),数据库对象dao实例(数据库连接)。
Public.py:公共模块。存放本系统公共的变量、函数、用例等。
common
Func.py:公共函数,比如获取时间日期,获取随机数,处理参数。
Login.py:登录模块,属于各系统通用,故放于此目录下。包括密码加密,验证码处理,强制登录。
Var.py:全局变量。比如token。
config
RelativePath.py:配置目录、文件的相对路径。
data
echarts数据存储csv文件,项目接口清单等。
result
log:日志。logging实现。支持输出到文件和打印控制台。文件暂时使用较少,主要打印控制台便于调试。
接口调用记录:输出每个测试方法调用接口的记录,包括参数、响应、耗时等。
自动化测试报告:HTMLTestRunner.py实现的html页面报告。
util
AutoCode.py:自动生成结构化测试代码。
CSV.py:csv相关函数封装。比如输出接口调用记录。
Excel.py:读取和存储excel文件。
Format.py:格式化。比如把浏览器复制的参数格式化为代码中带有缩进的json。
HTMLTestRunner.py:用于输出自动化测试报告。
Log.py:封装日志方法。
Mysql.py:数据库相关操作。
Parewise.py:结对测试。一种测试技术,后文详述。
Request.py:核心工具,封装接口发送请求。
Mail.py:发送邮件。
run.py
执行测试用例入口,可以选择执行一个或多个系统,也可以执行一个系统中一个或多个模块。