java + testNG测试框架搭建--HTTP层接口应用(五)
package com.iflytek.TestCase.domesticAPP.domesticAPPV121;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.iflytek.zx.test.smart.annotation.AEnv;
import com.iflytek.zx.test.smart.service.web.AbstractHttpTests;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
import com.iflytek.Common.*;
import static com.iflytek.Common.Const.*;
@AEnv(dataDiffEnv = false)
//阅读书库类型查询
public class getReadBookTypeListTest extends AbstractHttpTests {
private LoginGetToken loginGetToken = new LoginGetToken();
public String LoginToken=null;
@BeforeClass
public void init() {
LoginToken = loginGetToken.LoginGetTokenTest(domesticAPP_appId_Online, "domestic_student");
}
@Test()
/*获取书本接口测试用例*/
public void getReadBookTypeList() {
RestTemplate restTemplate = new RestTemplate();
// 请求网址
String url ="https://xxxxxx/xx/xxx/readBook/getReadBookTypeList";
//请求报文
HttpHeaders headers = new HttpHeaders();
headers.add("S-Auth-AppId","qqzw_domestic_app_services_prod");
headers.add("S-Auth-GroupId","62043c66e14c4b8b9a42c6c19c40fadd");
headers.add("S-Auth-Signature","JlK2CAhnpqB2oiXn13nKbWWR+SStkQ8O+8MdGI/3Au4=");
headers.add("S-Auth-Nonce","e94b4afb-e410-47b8-9e96-6a5a621fcea0");
headers.add("S-Auth-Timestamp","1610593431860");
headers.add("S-Auth-Version","1");
headers.add("S-SDK-Version","1.0.6");
headers.add("S-Auth-Stage","RELEASE");
headers.add("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
headers.add("Connection","Keep-Alive");
headers.add("User-Agent","ShieldAndroidSDK");
//请求参数
Map map = new HashMap(); //dubbo层接口参数类型,参照接口测试文档 {"key1":value1,"key2":value2}
map.put("token", LoginToken);
map.put("clientType", "android");
map.put("appCode", "domestic_student");
map.put("role", "0");
//将接口参数转化json格式,并赋值给params
MultiValueMap postParameters = new LinkedMultiValueMap();
postParameters.add("params", JSON.toJSONString(map));
HttpEntity> request = new HttpEntity<>(postParameters, headers);
JSONObject response = restTemplate.postForObject(url, request, JSONObject.class); //发送请求
System.out.println(response); //打印响应结果
//断言比较响应结果的正确性
Assert.assertEquals(response.getString("message"), "成功");
Assert.assertEquals(response.getJSONArray("returnValue").size(), 3);
Assert.assertEquals(response.getJSONArray("returnValue").getJSONObject(0).get("name"), "童话绘本");
Assert.assertEquals(response.getJSONArray("returnValue").getJSONObject(1).get("name"), "传统美德故事");
Assert.assertEquals(response.getJSONArray("returnValue").getJSONObject(2).get("name"), "少年中国梦");
}
}
java + testNG测试框架搭建--HTTP层接口应用(五) 相关文章
java_多线程 (三)
1.什么是死锁 2.什么是Lock锁 /** * 第三种解决线程安全的方式 : Lock 锁 -- JDK5.0新增 * synchronized * 问题 : synchronized 与 lock 的异同 * 1.相同 : 两者都可以解决线程的安全问题 * 2.不同 : synchronized 在执行完相应的代码后 , 会自动释放锁 * lo
【Bean转XML】JAXB读取xml文档转换为java对象报错:IllegalAnnotationExceptions 类的两个属性具有相同名称 corpId
1、POM 依赖 dependency groupIdjavax.xml.bind/groupId artifactIdjaxb-api/artifactId version2.3.1/version /dependency dependency groupIdcom.sun.xml.bind/groupId artifactIdjaxb-impl/artifactId version2.3.0/version /dependency dependency group
根据map的value进行排序
JAVA对Map按Value值排序 在java实际编程中经常需要使用到HashMap,TreeMap以及LinkedHashMap来保存键值对,而java中对Map按Value排序并没有已经写好的方法,需要自己实现。 作者使用了自定义类以及Collections包的sort()方法实现Map的按值排序,具体代码如下
java静态代码块、属性赋值、构造代码块、构造方法的执行顺序
java静态代码块、属性赋值、构造代码块、构造方法的执行顺序 首先static代码块和static变量赋值均在类加载时执行,普通属性在对象创建时产生,显然 static优先于非static static代码块与static属性先后顺序 package test;public class Parent {static int a
Java8对List集合对象某个字段进行排序
一、准备工作 1、声明一个对象 class User{ private Integer userId; private String userName; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return us
Java并发包源码学习系列:阻塞队列实现之ArrayBlockingQueue源码解析
目录 ArrayBlockingQueue概述 类图结构及重要字段 构造器 出队和入队操作 入队enqueue 出队dequeue 阻塞式操作 E take() 阻塞式获取 void put(E e) 阻塞式插入 E poll(timeout, unit) 阻塞式超时获取 boolean offer(e, timeout, unit) 阻塞式超时插入 其他常
586 Node.js系列二 - Node基础知识: JavaScript文件执行,Node的REPL,给node程序传递参数,node程序输出内容,常见全局对象,特殊的全局对象
一. Node执行代码 1.1. JavaScript文件执行 如果我们编写一个js文件,里面存放JavaScript代码,如何来执行它呢 // 1.直接打印一段文字console.log("我是一段JavaScript代码");// 2.定义一个函数, 调用这个函数function sum(num1, num2) { return num1 + num2
解决spark-submit的There is insufficient memory for the Java Runtime Environment to continue.(老顽固问题) failed; error=Cannot allocate memory (errno=12)
Q:第一次提交wordcount案例,OK,一切正常。再次提交,出现下述错误。完整错误粘贴如下: 21/01/27 14:55:48 INFO spark.SecurityManager: Changing modify acls groups to: 21/01/27 14:55:48 INFO spark.SecurityManager: SecurityManager: authenticatio
java学习笔记--基础篇08(oop基础)
JAVA面向对象 1、 面向对象面向过程 面向过程思想 步骤简单清晰,第一步做什么,第二步做什么... 面向过程适合处理一些较为简单的问题(处理过程我能想的明白,复杂了就想不明白了) 面向对象思想 分类的思维模式,首先对待处理的问题进行分类;然后对这些分类
java对象
对象 面向过程,面向对象 面向过程,面向对象: 面向过程思想:步骤清晰,第一步做什么,第二部做什么; 面向对象:以分类的思维模式,思考解决问题需要哪些分类,适合处理复杂的问题。 面向对象编程(OOP)的本质: 以类的方式组织代码,以对象的组织(封装