1.可以大体讲一下大家接口自动化框架是怎么搭建的吗?html
好的,咱们采用unittest和ddt数据驱动思想搭建测试框架,(对数据excel读取、yaml配置、Requests接口请求、Re参数化、Pymysql数据库效验、日志等模块实现封装),其中,用前端
1.Openpyxl来处理excel,存储测试数据(用例数据)python
2.pyyaml来配置文件(configparse,pyyaml)mysql
4.Requests请求库,来向接口发起请求sql
5.使用logging模块来建立日志器,记录项目中的日志信息数据库
6.使用HttpTestRunner来生成HTML测试报告json
7.使用re模块来实现参数化(正则匹配)api
8.使用动态建立属性(类属性)的机制来实现接口之间的依赖 (setattr getattr)浏览器
好比:咱们项目中客服指派订单的时候,须要上一个接口订单ID,首先要对上一个接口发送请求,获取订单id,经过实例化对象,建立属性名,获取属性值,从而实现指派订单接口的成功请求。安全
分层设计
为了提高接口自动化测试框架的拓展性、稳定性、完整性,进而提高测试效率,每每会将测试框架工程化,
整个流程会分为不一样的层级,每一个层级之间保持相对独立
cases
测试执行逻辑层,用于存放全部的测试用例类
configs
配置层,用于存放当前框架中的全部配置信息(使用不频繁,修改不频繁的数据)
datas
测试数据层,用于存放全部的测试数据,测试参数(可使用excel,json,yaml,数据库来存储)
libs
自定义库文件层,用于存放自定义或者二次开发的库文件
logs
日志层,用于保存运行框架过程当中产生的全部有效日志信息
reports
报告层,用于保存全部的测试报告文件(通常为html报告)
scripts
脚本封装层,用于保存全部的操做封装模块(yaml,excel,log.mysql,requests,参数化等)
run.py
用例启动文件,使用套件加载用例,批量执行并生成报告
9.使用Jenkins来实现持续集成
a.Jenkins如何配置定时任务?
1.首先构建触发器
2.勾选Build peroidically
3.输入框中配置触发时间
00 12 ** 3 每周三 12点
好比 咱们周三中午的时候运行自动化脚本,发送测试报告
2.接口自动化的流程?
a.需求 --需求文档、接口文档
b.评审
c.用例
d.编写自动化脚本
e.jenkins持续集成--定时执行脚本,生成报告
f.报告
g.发送邮件
h.提bug
3.你的项目中接口用例有多少?每次大概执行多长时间?
咱们项目有65个接口;大概1200条用例,执行时间大概半个小时
4.Get和post区别?
post的全部操做对用户来讲都是不可见的 (安全性)
2.Get传送的数据量较小,这主要是由于受URL长度限制
Post传送的数据量较大,通常被默认认为不收限制 (传输量)
5.cookie与session的区别
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,别人能够分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session
session会在必定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能考虑到轻服务器性能方面,应当使用cookie
单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie
因此我的建议:
将登录信息等重要信息存放为session
其余信息若是须要保留,能够放在cookie中
6.Http和https区别?
https协议须要到CA申请证书,通常免费证书较少,于是须要必定费用。http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl/tls加密传输协议。
7.在接口自动化中,如何让token不失效?
1.调用登陆接口,拿到获取的token
2.将拿到的token放在header中,调用确认登陆接口
3.确认登陆接口调用成功,接口返回信息正常
8.下个接口请求参数依赖上个接口的返回数据?
不一样的接口封装不一样的函数或方法,须要的数据return出来,用一个中间变量a去接收,
后面的接口传a就能够了
9.接口测试中依赖登陆状态下的接口如何测试?
本质是:在每次发送请求时须要带上session或cookie才能发送成功,在构建post
请求时添加必要的session或者cookie
10.依赖于登陆的接口如何处理?
登陆接口依赖token的,能够先登陆后,token存到一个yaml或者json或者ini的配置文件里面
后面全部的请求去拿这个数据就能够全局使用了
若是是cookies的参数,能够用session自动关联
11.依赖第三方的接口如何处理?
这个须要本身去搭建一个Mock服务、模拟接口返回数据
mock能够用在单元测试过程当中,还有一个用途,当前端开发在开发页面的时候,须要服务端提供API接口,此时服务端还没开发完成,或者说没搭建测试环境,这时候前端开发会本身mock一个api服务端,本身给本身提供调用接口的返回数据。
12.接口产生的垃圾数据如何清理?
造数据的数据清理,须要python链接数据库,作增删改查操做
测试用例前置,setUp作数据准备
后置操做,tearDown作数据清理
14.不可逆操做,如何处理,好比删除一个订单这种接口如何测试?
主要靠手工测试造数据,直接在数据库改字段状态。自动化也同样,造数据能够用python链接数据库,作增删改查的操做
测试用例前置,setUp作数据准备
后置操做,tearDown作数据清理
15.你的项目中接口用例有多少?每次大概执行多长时间?
咱们项目有65个接口,大概1200条用例,执行时间大概半小时左右。
16.接口自动化的参数你是如何实现的?说说你的想法?
我会用python中Re模块中的sub方法去替换
17.如何使你的接口自动化测试用例直接跳过前面几条,直接执行第 7 条?
能够在 Excel 建立一列,指定是否跳过,而后在用例时,过滤掉这些用例
使用条件判断,经过 case_id==7 来决定是否执行
18.如何使你的接口自动化脚本,对于同一个请求让同一个用户请求屡次?
在 Excel 中设置相关执行次数的字段,在 ddt 数据驱动时,使用代码来控
制执行次数。
params和data区别
因为get请求无请求体,post请求有请求体
使用params参数时,默认会把参数附加到url后面,因此发送get请求时应使用params参数
使用data参数时,参数会存放到请求体中,因此发送post请求时不能使用params,应使用data,除非接口及支持get又支持post,一样get请求也不能使用data参数
为何要对requests进行封装?
1.经过封装,我能够直接把全部的请求参数统一使用字典来传递
好比,咱们接口须要的数据也就是测试数据每每会保存在excel表里面,那么咱们取到后是字符串类型,字符串类型是没法做为请求参数传递的,全部我每次都要作数据转换,再传递给接口,为了节省这个过程,我只须要把这个过程封装到个人requests里便可,每次取数据后会自动给我处理
第二,当我想保持某个状态时,不想每次都初始化一个session对象,那么我能够把它封装到个人reuqests里面,之后直接调用便可
如何使用Seesion解决接口保持状态?
初始化Session实例,经过这个实例调用request()方法发送请求
说说接口测试的流程,介绍一下request有哪些内容?
1.流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否经过
2.request内容:
封装了各类请求类型,get,post等;
以关键字参数的方式,封装了各类请求参数,params,data,headers,token等
封装了响应内容,status_code,json(),cookies,url
session会话对象,能够跨请求
做者:arvin_one
连接:https://www.jianshu.com/p/190d510d8c36 来源:简书 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。