您的位置:首页 > 移动开发

APP接口自动化测试JAVA+TestNG小实例

2017-08-17 18:48 357 查看
APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

以下实例均为本次总结再次编写,,如转载还请保留出处与作者姓名Findyou,谢谢!

3.1.1 待测接口说明

    1.国家气象局天气预报接口

    例:北京市天气

        接口的址:http://www.weather.com.cn/data/cityinfo/101010100.html

        请求方式:GET

        请求结果:

    复制代码

    {

        "weatherinfo": {

            "city": "北京",

            "cityid": "101010100",

            "temp1": "15℃",

            "temp2": "5℃",

            "weather": "多云",

            "img1": "d1.gif",

            "img2": "n1.gif",

            "ptime": "08:00"

        }

    }

    2.测试目标

    请求对应cityid代码,返回的城市是否是预期城市。

 

 

3.1.2 新建JAVA工程


    步骤同上一篇2.2.2.1新建JAVA工程,不再复述,如不懂请百度Eclipse新建工程

     

    1.工程结构说明



     

     

    2.Common.java源码

    复制代码

    package findyou.Interface;

    import org.codehaus.jettison.json.JSONException;

    import org.codehaus.jettison.json.JSONObject;

    public class Common {

        /**

         * 解析Json内容

         *

         * @author Findyou

         * @version 1.0 2015/3/23

         * @return JsonValue 返回JsonString中JsonId对应的Value

         **/

        public static String getJsonValue(String JsonString, String JsonId) {

            String JsonValue = "";

            if (JsonString == null || JsonString.trim().length() < 1) {

                return null;

            }

            try {

                JSONObject obj1 = new JSONObject(JsonString);

                JsonValue = (String) obj1.getString(JsonId);

            } catch (JSONException e) {

                e.printStackTrace();

            }

            return JsonValue;

        }

    }

    复制代码

     

     

    3.getCityWeathe.java源码

    复制代码

    package findyou.Interface;

    import java.io.BufferedReader;

    import java.io.DataOutputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    publ
4000
ic class getCityWeather {

        private String url="";

        

        public String geturl() {

            return url;

        }

        public String getHttpRespone(String cityCode) throws IOException {

            String line = "";

            String httpResults = "";

            url=("http://www.weather.com.cn/data/cityinfo/"

                    + cityCode + ".html");

            try {

                HttpURLConnection connection = URLConnection

                        .getConnection(url);

                DataOutputStream out = null;

                // 建立实际的连接

                connection.connect();

                //out = new DataOutputStream(connection.getOutputStream());

                //out.flush();

                //out.close();

                BufferedReader reader = new BufferedReader(new InputStreamReader(

                        connection.getInputStream()));

                while ((line = reader.readLine()) != null) {

                    httpResults = httpResults + line.toString();

                }

                reader.close();

                // 断开连接

                connection.disconnect();

            } catch (Exception e) {

                e.printStackTrace();

            }

            return httpResults;

        }

    }

    复制代码

     

     

    4.URLConnection.java源码

    复制代码

    package findyou.Interface;

    import java.net.HttpURLConnection;

    import java.net.URL;

    public class URLConnection {    

        public static HttpURLConnection getConnection(String url){

            HttpURLConnection connection = null;

            try {

                // 打开和URL之间的连接

                URL postUrl = new URL(url);

                connection = (HttpURLConnection) postUrl.openConnection();

                 // 设置通用的请求属性

                connection.setDoOutput(true);

                connection.setDoInput(true);

                connection.setRequestMethod("GET");

                connection.setUseCaches(false);

                connection.setInstanceFollowRedirects(true);

                connection.setRequestProperty("Content-Type", "application/json");

                connection.setRequestProperty("Charset", "utf-8");

                connection.setRequestProperty("Accept-Charset", "utf-8");

            } catch (Exception e) {

                e.printStackTrace();

            }

            return connection;

        }

    }

    复制代码

     

     

 
3.1.3 编写测试用例

    1.测试用例(常见"二"一般的写法)

    复制代码

    package findyou.testcase;

    import java.io.IOException;

    import org.testng.Assert;

    import org.testng.Reporter;

    import org.testng.annotations.Test;

    import findyou.Interface.Common;

    import findyou.Interface.getCityWeather;

    public class test {

        public String httpResult= null, weatherinfo= null, city=null,exp_city = null;

        public static String cityCode="";    

        public static getCityWeather weather=new getCityWeather();

        @Test(groups = { "BaseCase"})

        public void getShenZhen_Succ() throws IOException{

            exp_city="深圳";

            cityCode="101280601";

            Reporter.log("【正常用例】:获取"+exp_city+"天气成功!");

            httpResult=weather.getHttpRespone(cityCode);

            Reporter.log("请求地址: "+weather.geturl());

            Reporter.log("返回结果: "+httpResult);

            weatherinfo=Common.getJsonValue(httpResult, "weatherinfo");

            city=Common.getJsonValue(weatherinfo, "city");

            Reporter.log("用例结果: resultCode=>expected: " + exp_city + " ,actual: "+ city);

            Assert.assertEquals(city,exp_city);

        }

        

        @Test(groups = { "BaseCase"})

        public void getBeiJing_Succ() throws IOException{

            exp_city="北京";

            cityCode="101010100";

            Reporter.log("【正常用例】:获取"+exp_city+"天气成功!");

            httpResult=weather.getHttpRespone(cityCode);

            Reporter.log("请求地址: "+weather.geturl());

            Reporter.log("返回结果: "+httpResult);

            weatherinfo=Common.getJsonValue(httpResult, "weatherinfo");

            city=Common.getJsonValue(weatherinfo, "city");

            Reporter.log("用例结果: resultCode=>expected: " + exp_city + " ,actual: "+ city);

            Assert.assertEquals(city,exp_city);

        }

        

        @Test(groups = { "BaseCase"})

        public void getShangHai_Succ() throws IOException{

            exp_city="上海";

            cityCode="101020100";

            Reporter.log("【正常用例】:获取"+exp_city+"天气成功!");

            httpResult=weather.getHttpRespone(cityCode);

            Reporter.log("请求地址: "+weather.geturl());

            Reporter.log("返回结果: "+httpResult);

            weatherinfo=Common.getJsonValue(httpResult, "weatherinfo");

            city=Common.getJsonValue(weatherinfo, "city");

            Reporter.log("用例结果: resultCode=>expected: " + exp_city + " ,actual: "+ city);

            Assert.assertEquals(city,exp_city);

        }    

    }

    复制代码

     

     

    2.简化后的用例

    如何返回值格式与请求格式固定,用例优化如下

     

    复制代码

    package findyou.testcase;

    import java.io.IOException;

    import org.testng.Assert;

    import org.testng.Reporter;

    import org.testng.annotations.Test;

    import findyou.Interface.Common;

    import findyou.Interface.getCityWeather;

    public class test {

        public String httpResult= null, weatherinfo= null, city=null,exp_city = null;

        public static String cityCode="";

        getCityWeather weather=new getCityWeather();

        

        @Test(groups = { "BaseCase"})

        public void getShenZhen_Succ() throws IOException{

            exp_city="深圳";

            cityCode="101280601";

            resultCheck(cityCode, exp_city);

        }

        

        @Test(groups = { "BaseCase"})

        public void getBeiJing_Succ() throws IOException{

            exp_city="北京";

            cityCode="101010100";

            resultCheck(cityCode, exp_city);

        }

        

        @Test(groups = { "BaseCase"})

        public void getShangHai_Succ() throws IOException{

            exp_city="上海";

            cityCode="101020100";

            resultCheck(cityCode, exp_city);

        }

        

        public void resultCheck(String cityCode_str, String exp_city_str) throws IOException{

            Reporter.log("【正常用例】:获取"+exp_city_str+"天气成功!");

            httpResult=weather.getHttpRespone(cityCode_str);

            Reporter.log("请求地址: "+weather.geturl());

            Reporter.log("返回结果: "+httpResult);

            weatherinfo=Common.getJsonValue(httpResult, "weatherinfo");

            city=Common.getJsonValue(weatherinfo, "city");

            Reporter.log("用例结果: resultCode=>expected: " + exp_city_str + " ,actual: "+ city);

            Assert.assertEquals(city,exp_city_str);        

        }

    }

    复制代码

      

    工程下载地址:http://pan.baidu.com/s/1mhyTNny 密码:11ft

     

 
3.1.4 执行测试用例

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: