接口自动化涉及的技术及框架

一.testNg测试框架

1 .利用注解实现测试方法的执行顺序,比如:
利用@BeforeSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行前,执行日志
利用@AfterSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行结束后批量回写实际结果到Excel中
2.支持数据驱动,DataProvider注解的方法是数据提供者,一般返回Object[][] 和 Iterator<Object[]>两种类型,
Test注解的方法是数据接收者,接收DataProvider注解的方法传过来的数据进行测试
Iterator<Object[]>:用于把数据存入在一个实体类里,即数据按“对象”存储
Object[][]:一般把数据存放在Excel里

二.HttpClient

HttpClient发送请求、接收响应,实现了Http全部的方法,比如get。post 请求
/*

  • form表单格式
  • 请求头:Content-Type:application/x-www-form-urlEncoded;charset=utf-8
  • 参数:
  •  Get:拼接在URL上
    
  •  Post:setEntity 方法设置在请求体中,参数必须转化为key1=value&key2=value...这种形式
    

*Json格式(重点):
*请求头:Content-Type:application/json;charset=utf-8
*参数:

  •  Get:拼接在URL上
    
  •  Post:setEntity 方法设置在请求体中,参数必须转化为json格式的字符串
    

*/
public static String testByGet/post(String url, String parameters, String charset)
get和post方法入参是url,参数(json格式)编码格式,返回值类型是String类型(json格式
注意:get方法由于参数是拼接在URL上,所以需要把string格式的参数用fastjson技术转化成Map格式
步骤:1.创建request连接和填写URL和参数
2.发送请求
3.获取响应对象
4.根据响应对象获取状态码/响应实体报文/头信息

三.缓存

1.添加请求到请求头中(HttpRequest)
2.抓取cookies存到 cookies缓存中(HttpResponse)
在获取响应对象之前执行把缓存cookies添加到请求头中
在获取响应对象之后抓取抓取cookies存到 cookies缓存中(用于登陆接口,因为其他接口响应中无cookie)

四.利用Poi技术解析Excel,进行测试案例管理

接口信息sheet:ApiId(接口编号) ApiName(接口名称) Type(接口提交方式) Url(接口地址)
用例sheet:CaseId(用例编号) ApiId(接口编号) Params(参数) ExpectedResponseData(期望响应数据)ActualResponseData(实际响应数据) ValidateSql(接口执行前的脚本验证) BeforeResult(接口执行前数据库验证结果) AfterResult(接口执行后数据库验证结果)
变量sheet:Name(变量名) Value(变量值) Remarks(备注信息)
每一个Excel的Sheet数据都要要封装成一个对象,所以每个excel的Sheet的表头都要新建实体类
注意1:ValidateSql(接口执行前的脚本验证)里sql语句需要按序号指定sql,所以也需要新建一个实体类
注意2:BeforeResult(接口执行前数据库验证结果)和AfterResult(接口执行后数据库验证结果)里SQL执行的执行结果是map格式,所以也需要把序号和map新建一个实体类
注意3:执行完操作后要把执行结果批量写入每一条数据的ActualResponseData(实际响应数据)中,这是需要caseId cellName result新建一个实体类
每一个Excel的Sheet数据都要要封装成一个对象,所以每个excel的Sheet的表头都要新建实体类
利用POI技术读取EXCEl中的数据,利用反射把Excel的数据存入到List集合中,然后把List集合转换成为二维数组,因为DataProvider注解的方法是数据提供者,一般返回Object[][] 。

五.抽象公共类BaseCase

一维数组变量: public String[] cellNames = {“CaseId”,“ApiId”,“Params”,“ValidateSql”};
1.读取Excel数据到Java内层中(抽象方法,由每个接口类继承重新)
2.解析Excel中数据,保证数据可直接使用
根据用例中apild获取url和type
把参数和执行sql中的变量替换成具体值
3.传入(url, type, params)执行接口,执行接口前后需要查询数据库
DBCheckUtils.query(caseId,“BeforeResult”,validateSql);
String result = ApiExcutor.doService(url, type, params);
DBCheckUtils.query(caseId,“AfterResult”,validateSql);
4.把每次执行的数据封装成一个对象存放到集合中
WriteBackData wbd = new WriteBackData(caseId,“ActualResponseData”,result);//有参构造 一组数据
ExcelUtils.wbdList.add(wbd);//这个方法会执行20次
5.套件执行完毕之后一次性回写收集好的数据到Excel中
ExcelUtils.batchWriter();//不需要传参,因为参数都在wbdList里
注意:回写Excel思路:
caseid except ActualResponseData
1 哈哈 哈哈
2 缓缓 缓缓
行与列的对应,如果caseid为1时 列为ActualResponseData,就能知道回写至具体哪一行那一列
1.先获取表头列表:表头在第一行,所以循环一次行,然后再循环第一行中的所有列名的列表,把列名和所对应的列号存入map里,即:cellnameCellnumMapping.put(cellname, i),
判断: 在列表中获取caseid所属的列号存入变量caseIdCellnum中,用于caseid和行号的映射
2.再获取除表头行的其他所有行
循环所有行,获取所有行中列为caseid的所有值(1,2),存入map中,用于存放每个caseid对应的行号,caseIdRownumMapping.put(caseId,i)
3.获取行号和列号用于回写
行号,caseid(1,2) caseIdRownumMapping.get(caseId)
列号:ActualResponseData cellnameCellnumMapping.get(ActualResponseData)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值