接口测试HttpClient&fastJson 总结与案例

Posted fatcat1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试HttpClient&fastJson 总结与案例相关的知识,希望对你有一定的参考价值。

多次理解,反复练习,破釜沉舟。

 

HttpCLient是什么

Apache Jakarta Common 下的子项目
支持 HTTP 协议的客户端编程工具包
支持 HTTP 协议最新的版本

 

怎么利用HttpClient写自动化

简化重点:

1、接口请求与接口响应(先要理解http协议),常见的以下两种请求方式

   Get

 Post

2、数据解析,学会以下用法

 JsonObject

 JsonArray

3、结果断言

技术图片

技术图片

 

 

 

演示代码片段

这里以https://my.oschina.net/u/3559695/blog/1600534/网页的接口为例 1 @Test

 2     public void test1() throws IOException {
 3 //      构造数据
 4         String cookie = "111111";//会定时更新,自己去获取吧~
 7         //json的写法  => Content-Type:application/json  (传输的数据格式)
 8 //        User user=new User();//需要新建一个User类,命名属性的set方法
 9 //        user.setUserId(3559695);
10 //        user.setSkillsNum(5);
11 //        String jsonString=JSON.toJSONString(user); 等同于  String jsonString=" {"userId":3559695,"skillsNum":5}";
12 // System.out.println("打印"+jsonString); 13 // StringEntity stringEntity=new StringEntity(jsonString); 14 15 //form的写法 => Content-Type:application/x-www-form-urlencoded 16 //携带普通的参数params的方式 17 List<NameValuePair> params=new ArrayList<>(); 18 params.add(new BasicNameValuePair("userId","3559695"));//BasicNameValuePair是存储键值对的类 19 params.add(new BasicNameValuePair("skillsNum","5")); 20 String jsonString=EntityUtils.toString(new UrlEncodedFormEntity(params, Consts.UTF_8));//这里就是:userId=3559695&skillsNum=5 21 System.out.println(jsonString); 22 23 //1、打开浏览器 24 CloseableHttpClient httpClient = HttpClients.createDefault(); 25 //2、创建httpGet对象 26 HttpPost httpPost = new HttpPost("https://my.oschina.net/u/3559695/radar/getUserPortraitRadarMap"); 27 httpPost.addHeader("Cookie", cookie); 28 // httpPost.addHeader("Accept-Encoding","gzip, deflate, br"); 29 httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded"); 30 httpPost.addHeader("User-Agent", 31 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/78.0.3904.97 Safari/537.36"); 32 // httpPost.setEntity(stringEntity); 这个是json格式的方式 33 httpPost.setEntity(new UrlEncodedFormEntity(params,"UTF-8")); 34 //3、发送请求,获取响应模型 35 CloseableHttpResponse httpResponse = httpClient.execute(httpPost); 36 //4、从响应模型获取响应实体 37 HttpEntity httpEntity = httpResponse.getEntity(); 38 //5、将响应实体转为String 39 if (httpEntity != null){ 40 String str = EntityUtils.toString(httpEntity); 41 System.out.println(str); 42 //6、String解析为JsonObject、JsonArray 43 JSONObject jsonObject=JSONObject.parseObject(str); 44 System.out.println(jsonObject); 45 System.out.println("输出状态码code:"+jsonObject.getString("code")); 46 System.out.println(jsonObject.get(1)); 47 JSONObject jsonObject1=jsonObject.getJSONObject("result"); 48 System.out.println(jsonObject1); 49 JSONArray jsonArray=JSONArray.parseArray(jsonObject1.getString("skills")); 50 System.out.println(jsonArray); 51 System.out.println(jsonArray.get(1)); 52 53 //测试 54 Assert.assertEquals(jsonObject.getString("code"),"1"); 55 Assert.assertTrue(jsonArray.get(1).equals("社区影响力")); 56 Assert.assertNotNull(jsonObject.getString("result")); 57 Assert.assertNotSame(jsonObject1.getString("skills"),jsonArray); 58 59 }else EntityUtils.consume(httpEntity); 60 //释放资源 61 httpResponse.close(); 62 httpClient.close(); 63 }

 url响应结果:

{"code":1,"message":"success","result":{"skills":["社区活跃度","社区影响力","技术贡献度","活动活跃性","开源贡献度","学习积极性"],"maxSkillScore":100,"skillsScore":[11.932739749333637,10.202996646175928,10.279304325337817,5.0,5.0,12.192893401015228]},"time":"2019-11-21 12:45:10"}

  

以上是关于接口测试HttpClient&fastJson 总结与案例的主要内容,如果未能解决你的问题,请参考以下文章

接口测试“八重天”---HttpClient

直播2题目:HttpClient在接口测试中应用

HttpClient + Testng实现接口测试

接口测试之HttpClient

最全面Java接口自动化测试实战 HttpClient+TestNG+Mock+MyBatis

接口自动化:HttpClient + TestNG + Java - 接口测试概述+自动化环境搭建