51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2179|回复: 0
打印 上一主题 下一主题

[讨论] Web接口自动化测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-25 15:42:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
接口的理解

接口就是API,可以理解为用来供外部调用(访问)的东东(模块)。

比如:

手机上可以查看实时天气(大概原理就是app应用调用了气象平台提供天气查询接口);12306网站的实名制认证
(需要调用政府公安局相关信息系统提供的身份认证接口);

微信上绑定银行卡(需要调用银行系统提供的相关业务接口)。

JSON介绍

JSON是一种数据格式,任何对象都可以使用JSON数据来表示。

可以表示某人,比如:

{

"name":"Bill Gates",

"street":"Fifth Avenue New York 666",

"age":56,

"phone":"5551234567"

}
可以表示网站,比如:

{ "sites": [ { "name":"菜鸟教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, {
"name":"微博" , "url":"www.weibo.com" } ] }
等等。

注意:还有另外一种数据格式叫XML。

Web接口的访问

比如:

天气查看接口的地址为:http://weather.51wnl.com/weatherinfo/GetMoreWeather

参数列表如下:

参数名 备注

cityCode 城市编码

weatherType 查看类型[0:查看一周内的天气情况 1:查看当天的天气情况]

打开浏览器,输入如下地址:


返回的json数据如下:


如果要格式化显示json数据的话,可以在火狐上安装格式化json数据的插件


或者,通过在线网站对json数据格式化显示


Web接口自动化测试

检查接口返回的城市和温度是否正确。

代码如下:

  1. package day01;
  2. import static org.junit.Assert.*;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.client.methods.HttpGet;
  7. import org.apache.http.impl.client.CloseableHttpClient;
  8. import org.apache.http.impl.client.HttpClients;
  9. import org.apache.http.util.EntityUtils;
  10. import org.json.JSONObject;
  11. import org.junit.After;
  12. import org.junit.Test;
  13. import org.junit.runner.RunWith;
  14. import org.junit.runners.Parameterized.Parameters;
  15. import org.junit.runners.Parameterized;

  16. @RunWith(Parameterized.class)
  17. public class WeatherTest {
  18.     private CloseableHttpClient httpClient;
  19.     private int id;//用例编号
  20.     private String city;//城市编号
  21.     private int type;//查看类型  0:查看本周内的天气    1:查看当天的天气
  22.     private String expectedCity;//期望值
  23.     private String expectedTemp;//期望温度

  24.     public WeatherTest(int id, String city, int type, String expectedCity, StringexpectedTemp) {
  25.         super();
  26.         this.id = id;
  27.         this.city = city;
  28.         this.type = type;
  29.         this.expectedCity = expectedCity;
  30.         this.expectedTemp = expectedTemp;
  31.     }

  32.     @After
  33.     public void end() throws Exception{
  34.         httpClient.close();//关闭客户端
  35.     }

  36.     @Parameters
  37.     public static List data(){
  38.         Object[][] arr = {
  39.                 {1,"101010100",1,"北京","-1"},
  40.                 {2,"101020100",1,"上海","5"},
  41.                 {3,"101280101",1,"广州","8"}
  42.         };
  43.         return Arrays.asList(arr);
  44.     }

  45.     @Test
  46.     public void test() throws Exception{
  47.             //接口地址
  48.              String url ="http://weather.51wnl.com/weatherinfo/GetMoreWeather";
  49.              //创建一个客户端用来访问接口
  50.              httpClient= HttpClients.createDefault();
  51.              //HttpClient httpClient = new DefaultHttpClient();
  52.              //创建一个请求
  53.             HttpGet httpGet =new HttpGet(url+"?cityCode="+city+"&weatherType="+type);      
  54.             //发送该请求
  55.             HttpResponse result =httpClient.execute(httpGet);
  56.             //获取接口返回的内容
  57.             String resData= EntityUtils.toString(result.getEntity());
  58.             //将接口返回的内容转成JSON实例
  59.             JSONObject json =new JSONObject(resData);
  60.             //从JSON实例里面获取天气实例
  61.             JSONObject weatherInfo =json.getJSONObject("weatherinfo");
  62.             //验证返回的城市是否和期望值相等
  63.             assertEquals(expectedCity,weatherInfo.getString("city"));
  64.             //验证返回的温度是否和期望值相等
  65.             assertEquals(expectedTemp,weatherInfo.getString("temp"));
  66.     }
  67. }
复制代码

附截图:


在HRIS系统中调用天气查看接口(了解)

步骤一、引入相关的jar包


步骤二、创建一个Servlet

该Servlet会调用天气查询的接口,代码如下:

  1. package com.hris.servlet;

  2. import java.io.IOException;
  3. import java.io.PrintWriter;

  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;

  8. import org.apache.http.HttpResponse;
  9. import org.apache.http.client.methods.HttpGet;
  10. import org.apache.http.impl.client.CloseableHttpClient;
  11. import org.apache.http.impl.client.HttpClients;
  12. import org.apache.http.util.EntityUtils;



  13. public class WeatherServlet extends HttpServlet {
  14.     public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {   
  15.         String url ="http://weather.51wnl.com/weatherinfo/GetMoreWeather?cityCode="+request.getParameter("city")+"&weatherType=1";
  16.         try{
  17.          CloseableHttpClient  httpClient = HttpClients.createDefault();
  18.             HttpGet httpGet =new HttpGet(url);      
  19.             HttpResponse result =httpClient.execute(httpGet);        
  20.             String resData = EntityUtils.toString(result.getEntity());
  21.             response.setHeader("Content-type","application/json;charset=UTF-8");
  22.             response.setCharacterEncoding("utf-8");
  23.             response.setHeader("Cache-Control","no-cache");
  24.             PrintWriter printWriter =response.getWriter();
  25.             printWriter.write(resData);
  26.         }catch(Exception e){
  27.             e.printStackTrace();
  28.         }
  29.     }
  30. }
复制代码

附截图:


步骤三、修改web.xml配置

添加如下配置:

  1.   <servlet>
  2.     <servlet-name>weather</servlet-name>
  3.     <servlet-class>com.hris.servlet.WeatherServlet</servlet-class>
  4.   </servlet>
  5.   <servlet-mapping>
  6.     <servlet-name>weather</servlet-name>
  7.     <url-pattern>/getWeatherInfo</url-pattern>
  8.   </servlet-mapping>
复制代码

附截图:


步骤四、login.jsp页面修改HTML代码

在导航层里面新增如下HTML代码:

城市:<select id="city" name="city">
  <option value="101010100">北京</option>
  <option value="101020100" selected>上海</option>
  <option value="101280101">广州</option>     
</select>
<span id="tianqi"></span>
body开始标签里面的html更改为如下:

<body>
附截图:



步骤五、login.jsp页面增加JS程序发送AJAX请求查询天气

添加如下代码:

  1.         <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
  2.         <script type="text/javascript">
  3.             $(document).ready(function(){               
  4.                 $("#city").change(function(){
  5.                       $.post("getWeatherInfo",
  6.                               {
  7.                                 city:$(this).val()
  8.                               },
  9.                               function(data,status){
  10.                                   //var obj = $.parseJSON(data);
  11.                                   $("#tianqi").html("气温:"+data.weatherinfo.temp+"°C");
  12.                               });
  13.                 });
  14.             });                 
  15.         </script>   
  16.         <script type="text/javascript">
  17.             function method(){
  18.                   $.post("getWeatherInfo",
  19.                           {
  20.                             city:$("#city").val()
  21.                           },
  22.                           function(data,status){
  23.                               //var obj = $.parseJSON(data);
  24.                               $("#tianqi").html("气温:"+data.weatherinfo.temp+"°C");
  25.                           });
  26.             }
  27.         </script>
复制代码

附截图效果:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 21:22 , Processed in 0.064928 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表