前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】接口自动化测试编码实例分享

【干货】接口自动化测试编码实例分享

作者头像
软件测试君
发布2023-09-14 16:41:57
1790
发布2023-09-14 16:41:57
举报
文章被收录于专栏:测试人生
引言

本文主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相关)。

待测接口说明

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

例:北京市天气

接口的址:

http://www.weather.com.cn/data/cityinfo/101010100.html

请求方式:

GET

请求结果:
代码语言:javascript
复制
{
    "weatherinfo": {
        "city": "北京",
        "cityid": "101010100",
        "temp1": "15℃",
        "temp2": "5℃",
        "weather": "多云",
        "img1": "d1.gif",
        "img2": "n1.gif",
        "ptime": "08:00"
    }
} 

2、测试目标

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

新建JAVA工程

1、工程结构说明

2、Common.java源码

代码语言:javascript
复制
package com.test.interfaces.demo;

import org.codehaus.jettison.json.JSONException;

import org.codehaus.jettison.json.JSONObject;

public class Common {

    /**
     * 解析Json内容
     *
     * @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源码
代码语言:javascript
复制
package com.test.interfaces.demo;


import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

public 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);

            // 建立实际的连接

            connection.connect();

            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源码
代码语言:javascript
复制
package com.test.interfaces.demo;

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;

    }

}

编写测试用例

1、测试用例

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

代码语言:javascript
复制
package com.test.interfaces.demo;

import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;

import java.io.IOException;


public class TestWeataher {

    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);

    }

}

执行测试用例

测试结果:

本文完~~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022/05/25 08:30:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 待测接口说明
    • 1、国家气象局天气预报接口
      • 接口的址:
      • 请求方式:
      • 请求结果:
    • 2、测试目标
    • 新建JAVA工程
      • 1、工程结构说明
        • 2、Common.java源码
          • 3、GetCityWeathe.java源码
          • 4、URLConnection.java源码
          • 1、测试用例
      • 编写测试用例
      • 执行测试用例
        • 测试结果:
        相关产品与服务
        腾讯云服务器利旧
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档