接口自动化 您所在的位置:网站首页 api接口实例代码是什么 接口自动化

接口自动化

#接口自动化 | 来源: 网络整理| 查看: 265

一、 接口授权,鉴权相关概念

什么是授权,什么是鉴权

授权: 相当于给一个通行证,由服务器下发 鉴权: 鉴定是否有权限访问(判断有没有通行证)

目前最常用三种认证机制 1) Cookies 在这里插入图片描述 2) Session 在这里插入图片描述3) token 在这里插入图片描述 二、 实例说明:接口文档说明

在这里插入图片描述 2 实现思路: i) 登录接口:成功登录后获取响应体中的token信息 在这里插入图片描述 ii ) 其他接口(请求头Authorization 需要token信息),需要将token信息拼接进请求头中

代码实现示例 1) 登录接口: 请求发送,提取token信息: public class RLoginTest extends BaseCase { public static String apiNo="2"; public static int caseSheetNum=2; public static boolean isNeedToken = false; /** * 注册用例测试方法 * @param url 接口请求地址 * @param method 接口请求方法 * @param params 接口请求传参 * @param Type 接口请求类型 * @param title 用例说明 */ @Test(dataProvider="casesExcel") public void test_login(API api,Case c ) { // 1. 参数化替换 // 2. 数据库前置查询结果 // 3. 调用接口 setDefaultHeaders(isNeedToken); String body = HttpUtils.request(api.getUrl(),api.getMethod(),api.getContentType(),c.getParams(),headers); int case_row = Integer.parseInt(c.getId().split("_")[1]);; addWriteBackData(caseSheetNum, case_row,Constants.ACTUAL_RESPONSE_COLUMNNUM,body); // 3.1 从body里面提取token int code = (int) JSONPath.read(body, "$.code"); String msg = (String) JSONPath.read(body, "$.msg"); // if (code==0 && msg=="OK") { // 登录成功,提取内容并存储 setVariableToEnv(body,"$.data.token_info.token","${token}"); setVariableToEnv(body,"$.data.token_info.token_type","${token_type}"); setVariableToEnv(body,"$.data.id","${member_id}"); } /** * 从Excel中读取用例数据 * @return 用例数据,类型,二维数组 */ @DataProvider public Object[][] casesExcel(){ Object[][] cases = ExcelUtils.getAPIAndCaseByApiId(apiNo,caseSheetNum); return cases; } @BeforeClass public void init_class(){ ExcelUtils.cases = ExcelUtils.read(caseSheetNum,1,Case.class); } @AfterClass public void clear_class(){ ExcelUtils.cases=null; } }

在这里插入图片描述 2) 其他接口拼接token信息 i ) 其他接口请求代码

public class SRechargeTest extends BaseCase { public static String apiNo="3"; public static int caseSheetNum=3; public static boolean isNeedToken = true; /** * 充值用例测试方法 * @param url 接口请求地址 * @param method 接口请求方法 * @param params 接口请求传参 * @param Type 接口请求类型 * @param title 用例说明 */ @Test(dataProvider="casesExcel") public void test_recharge(API api,Case c ) { // 1. 参数化替换 // 2. 数据库前置查询结果 // 3. 调用接口 // 环境变量中存在token与token_type,那么就获取并设置键 setDefaultHeaders(isNeedToken); String body = HttpUtils.request(api.getUrl(),api.getMethod(),api.getContentType(),c.getParams(),headers); int case_row = Integer.parseInt(c.getId().split("_")[1]);; addWriteBackData(caseSheetNum, case_row,Constants.ACTUAL_RESPONSE_COLUMNNUM,body); } /** * 从Excel中读取用例数据 * @return 用例数据,类型,二维数组 */ @DataProvider public Object[][] casesExcel(){ Object[][] cases = ExcelUtils.getAPIAndCaseByApiId(apiNo,caseSheetNum); return cases; } @BeforeClass public void init_class(){ ExcelUtils.cases = ExcelUtils.read(caseSheetNum,1,Case.class); } @AfterClass public void clear_class(){ ExcelUtils.cases=null; } }

2) 请求头拼接 在这里插入图片描述 结果:

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有