接口自动化框架(java)--4.接口Token传递
这套框架的报告是自己封装的
一般token会在登录接口返回结果中呈现,从代码层面获取token的方式有很多种,我是使用jsonpath这个json路径语言去匹配token所在路径的key值
package com.qa.tests; import com.alibaba.fastjson.JSON;
import com.qa.base.TestBase;
import com.qa.Parameters.postParameters;
import com.qa.restclient.RestClient;
import com.qa.util.TestUtil;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.*;
import java.io.IOException;
import java.util.HashMap;
import static com.qa.util.TestUtil.dtt; public class EFPStagingCN extends TestBase { TestBase testBase;
RestClient restClient;
CloseableHttpResponse closeableHttpResponse;
//host
String host;
//Excel路径
String testCaseExcel;
//token路径
String tokenPath;
//header
HashMap<String ,String> postHeader = new HashMap<String, String>();
//登录token
HashMap<String,String> loginToken = new HashMap<String, String>();
@BeforeClass
public void setUp(){
testBase = new TestBase();
postHeader.put("Content-Type","application/json");
restClient = new RestClient();
//接口endpoint
host = prop.getProperty("Host");
//读取配置文件Excel路径
testCaseExcel=prop.getProperty("testCase1data");
//读取配置文件token路径
tokenPath = prop.getProperty("token");
} @DataProvider(name = "postData")
public Object[][] post() throws IOException {
return dtt(testCaseExcel,0); }
@DataProvider(name = "getData")
public Object[][] get() throws IOException{
return dtt(testCaseExcel,1); } @DataProvider(name = "deleteData")
public Object[][] delete() throws IOException{
return dtt(testCaseExcel,2);
} @Test(dataProvider = "postData")
public void login(String loginUrl,String username, String passWord) throws Exception {
postParameters loginParameters = new postParameters(username,passWord);
String userJsonString = JSON.toJSONString(loginParameters);
//发送登录请求
closeableHttpResponse = restClient.postApi(host+loginUrl,userJsonString,postHeader);
//获取登录后的token
loginToken = TestUtil.getToken(closeableHttpResponse,tokenPath);
int statusCode = TestUtil.getStatusCode(closeableHttpResponse);
Assert.assertEquals(statusCode,200); } @Test(dataProvider = "getData",dependsOnMethods = {"login"})
public void getMothed(String url) throws Exception{
//将token赋值后发送get请求
closeableHttpResponse = restClient.getApi(host+url,loginToken);
int statusCode = TestUtil.getStatusCode(closeableHttpResponse);
Assert.assertEquals(statusCode,200);
} @Test(dataProvider = "deleteData",dependsOnMethods = {"getMothed"})
public void deleteMothed(String url) throws IOException{
closeableHttpResponse = restClient.deleteApi(url);
int statusCode = TestUtil.getStatusCode(closeableHttpResponse);
Assert.assertEquals(statusCode,204);
} }
没有使用testng.xml的情况下调试testCase,需要设置一下dependsOnMethods,否则token将无法传递给其他test步骤
附上TestUtil.getToken()方法:
//获取返回的token ,使用JsonPath获取json路径
public static HashMap<String,String> getToken(CloseableHttpResponse closeableHttpResponse,String jsonPath) throws Exception{
HashMap<String,String> responseToken = new HashMap<String, String>();
String responseString = EntityUtils.toString( closeableHttpResponse.getEntity(),"UTF-8");
ReadContext ctx = JsonPath.parse(responseString);
String Token = ctx.read(jsonPath); //"$.EFPV3AuthenticationResult.Token"
if(null == Token||"".equals(Token)){
new Exception("token不存在");
} responseToken.put("x-ba-token",Token);
return responseToken;
}
原文地址https://blog.csdn.net/qq_34693151/article/details/81906177
接口自动化框架(java)--4.接口Token传递的更多相关文章
- 接口自动化框架(java)--2.接口用例POST请求,参数配置
这套框架的报告是自己封装的 Post类型的接口通常有请求参数,请求参数也是json类型,所以需要写一个类将请求参数序列化成json对象 以常见的登录接口为例 新建一个package,和postPara ...
- 接口自动化框架(java)--1.项目概述
项目github地址: https://github.com/tianchiTester/API_AutoFramework 这套框架的报告是自己封装的 1.测试基类TestBase: 接口请求的te ...
- 接口自动化框架(java)--5.通过testng.xml生成extentreport测试报告
这套框架的报告是自己封装的 由于之前已经通过Extentreport插件实现了Testng的IReport接口,所以在testng.xml中使用listener标签并指向实现IReport接口的那个类 ...
- 接口自动化框架(java)--3.get,delete请求,Excel管理多种请求类型
这套框架的报告是自己封装的 每种请求类型放入不同的sheet中,就可以避免新建太多的excel去做数据驱动. XSSFSheet类提供了一个读取sheet的方法,getSheetAt(int),通过下 ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- python + requests实现的接口自动化框架详细教程
前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...
- Jmeter+ant+Jenkins接口自动化框架搭建
摘自:https://testerhome.com/topics/13389 一.背景 上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...
- Jmeter+Ant+Jenkins接口自动化框架
最近应公司要求,搭建一套接口自动化环境.看到通知邮件,没有多想就确定了Jmeter路线.可能有些人会 说,为啥不用python,相对而言高大上一些.因为公司内部现在项目有用到Jmeter,正好可以结合 ...
随机推荐
- Java 模板模式
定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现 模板方法使得子类可以在不改变算法的结构的情况下,重新定义算法的某些步骤 类型:行为型 一次性实现一个算法的不变的部分,并将可变的行为留给 ...
- 学习笔记: Expression表达式目录树详解和扩展封装
1. 表达式链接扩展封装,ORM常用 And Or /// <summary> /// 表达式访问者 /// </summary> public class Expressi ...
- Java虚拟机----垃圾回收与内存分配
一.垃圾回收的对象: 在Java的运行时数据区中,程序计数器和虚拟机栈.本地方法栈是随着线程的生灭而生灭,栈当中栈帧的大小在编译的时候已知,在方法结束之后栈帧出栈,这部分的垃圾回收是明确的,因此需要讨 ...
- 安装Percona版本的MySQL主从复制
准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake //也需要安装gcc-c++,openssl openssl-deve ...
- jquery各版本
各版本下载: https://www.jb51.net/zt/jquerydown.htm
- Dev_VGridControl的使用
这个控件适合GridControl 控件相对应的,用来竖排显示用户数据,具体效果如下图: 实现这个效果用户可以参见官方帮助文档中的如下图所示的内容: 这里我对我用到的Category Rows(分类显 ...
- 论Photoshop的正确安装姿势
Adobe Photoshop 俗称 PS 专业的平面设计软件之一,是Adobe公司最最最牛逼的软件之一.入门很容易,但是想掌握高超的修图,仅靠后天99%的努力是没用的,设计这个东西,讲到底需要的是灵 ...
- js高级1
1.每一个元素身上的事件都是天生自带的,不需要我们去定义,只需要我们给这个事件绑定的方法,当事件触发的时候就会执行这个方法. 2.事件绑定的方法 1,div.onclick=function(){} ...
- 壁虎书3 Classification
MNIST fetch_openml returns the unsorted MNIST dataset, whereas fetch_mldata() returned the dataset s ...
- 为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用?
为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用? public class Ace { public static void main(String[] a ...