千家信息网

Java接口自动化测试框架设计之Get请求方法和测试的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了Java接口自动化测试框架设计之Get请求方法和测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.Ge
千家信息网最后更新 2026年11月01日Java接口自动化测试框架设计之Get请求方法和测试的示例分析

这篇文章主要介绍了Java接口自动化测试框架设计之Get请求方法和测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1.Get请求API举例

浏览器打开网址https://reqres.in,然后下拉一屏,我们就可以看到这个网站的API举例,我们来看看显示用户的get接口。

通过这个图,我们能够获取这些信息

1)网站host地址:https://reqres.in/

2)用户展示请求方式是: Get

3)接口的url 是: /api/users

4)接口的响应状态码是200,还可以看到响应body的JSON内容。

获取上面这些接口信息之后,我们在本地postman上来测试一下,如果没有postman请安装一个和postman差不多的能做接口手工测试的图形化界面工具,例如jmeter等。

这个接口,我们通过postman手动测试,发现和网站提供的是一样结果,说明这get请求的接口测试通过。那么如果我们想通过Java代码实现,需要怎么做呢?接下来,才是本篇的重点内容。

2.代码过程

前面一篇文章,我们介绍了基础环境的搭建过程,这里,接着前面的环境来逐步完成一个Get请求的设计和测试过程。

2.1 设计配置文件

我们这个序列是要教会大家设计接口自动化测试框架的目的,所以我们一些设计和组织项目结构的方式,需要参考框架的思维。写一个配置文件,很简单,意义就是方便测试多套环境下的接口测试。我们工作中,一个项目,分测试环境,预发布环境和线上生产环境,这三套环境,接口肯定是一样,只不过服务器地址不同,所以,我们框架设计需要支持写一套接口测试用例,在三套环境上可以跑得同。

在src/main/java下新建一个包:com.qa.config,然后在新包下新建一个config.properties文件,文件内容如下。

然后在src/main/java下新建一个包:com.qa.base,新建一个TestBase.java,这个类作为所有接口请求测试的父类,都需要继承这个父类,目前我们就写一个构造方法,实现加载读取properties文件。

TestBase.java 代码如下:

package com.qa.base; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;public class TestBase {                public Properties prop;                //写一个构造函数        public TestBase() {                                try {                        prop = new Properties();                        FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+ "/src/main/java/com/qa/config/config.properties");                        prop.load(fis);                } catch (FileNotFoundException e) {                        e.printStackTrace();                } catch (IOException e) {                        e.printStackTrace();                }                       }       }

这里来复习下构造函数的作用,上面我们把加载配置文件的代码写在空参构造里,好处就是,每初始化这个类的对象就会执行构造函数的代码,即执行读取配置文件这么一个作用。关于上面配置文件路径是否拼接正确,你可以新建一个main方法的类,执行打印语句:System.out.println(System.getProperty("user.dir"));

目前,项目结构图如下

2.2 Get请求方法代码实现

在src/main/java下新建一个包:com.qa.restclient,然后新建一个RestClient.java文件,下面是具体代码,实现了get请求,和得到相应状态码和响应头信息,以及响应主体的json内容。

package com.qa.restclient; import java.io.IOException;import java.util.HashMap;import org.apache.http.Header;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils; import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject; public class RestClient {                        //1. Get 请求方法        public void get(String url) throws ClientProtocolException, IOException {                                //创建一个可关闭的HttpClient对象                CloseableHttpClient httpclient = HttpClients.createDefault();                //创建一个HttpGet的请求对象                HttpGet httpget = new HttpGet(url);                //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收                CloseableHttpResponse httpResponse = httpclient.execute(httpget);                                //拿到Http响应状态码,例如和200,404,500去比较                int responseStatusCode = httpResponse.getStatusLine().getStatusCode();                System.out.println("response status code -->"+responseStatusCode);                                //把响应内容存储在字符串对象                String responseString = EntityUtils.toString(httpResponse.getEntity(),"UTF-8");                                //创建Json对象,把上面字符串序列化成Json对象                JSONObject responseJson = JSON.parseObject(responseString);                System.out.println("respon json from API-->" + responseJson);                                //获取响应头信息,返回是一个数组                Header[] headerArray = httpResponse.getAllHeaders();                //创建一个hashmap对象,通过postman可以看到请求响应头信息都是Key和value得形式,所以我们想起了HashMap                HashMap hm = new HashMap();                //增强for循环遍历headerArray数组,依次把元素添加到hashmap集合                for(Header header : headerArray) {                        hm.put(header.getName(), header.getValue());                }                                //打印hashmap                System.out.println("response headers -->"+ hm);                        } }

上面的get方法代码写得比较乱,需要认真看注释,不然层次不清晰。这段代码肯定需要以后重构的,我们刚开始,方便我们测试就先这样去写就好。目前,项目结构图如下

2.3 TestNG用例测试Get方法

在src/test/java下新建一个包:com.qa.tests,然后新建一个GetApiTest.java类,写一个TestNG的测试用例来测试下我们上面写的Get请求方法。

package com.qa.tests; import java.io.IOException; import org.apache.http.client.ClientProtocolException;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test; import com.qa.base.TestBase;import com.qa.restclient.RestClient; public class GetApiTest extends TestBase{        TestBase testBase;        String host;        String url;        RestClient restClient;                        @BeforeClass        public void setUp() {                testBase = new TestBase();                host = prop.getProperty("HOST");                url = host + "/api/users";                        }                @Test        public void getAPITest() throws ClientProtocolException, IOException {                restClient = new RestClient();                restClient.get(url);        }}

选择run as testng,运行,输出结果如下:

[RemoteTestNG] detected TestNG version 6.14.3response status code -->200respon json from API-->{"per_page":3,"total":12,"data":[{"last_name":"Bluth","id":1,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","first_name":"George"},{"last_name":"Weaver","id":2,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg","first_name":"Janet"},{"last_name":"Wong","id":3,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg","first_name":"Emma"}],"page":1,"total_pages":4}response headers -->{Transfer-Encoding=chunked, Server=cloudflare, CF-RAY=41e822894b39336d-HKG, Access-Control-Allow-Origin=*, ETag=W/"1bb-D+c3sZ5g5u/nmLPQRl1uVo2heAo", Connection=keep-alive, Set-Cookie=__cfduid=d9d93dc43c046707f916670ef491f4c8e1526917157; expires=Tue, 21-May-19 15:39:17 GMT; path=/; domain=.reqres.in; HttpOnly, Date=Mon, 21 May 2018 15:39:17 GMT, Content-Type=application/json; charset=utf-8, X-Powered-By=Express, Expect-CT=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"}PASSED: getAPITest

接下来,我们把响应内容的的body的json内容拷贝到一个在线的Josn格式化显示网站(https://www.json.cn/),看看效果如下。

这个结果和postman上一样,数据都对得上,本篇关于Java代码基于Httpclient开源库实现Get请求的过程就介绍到这里。

感谢你能够认真阅读完这篇文章,希望小编分享的"Java接口自动化测试框架设计之Get请求方法和测试的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

测试 接口 代码 方法 文件 对象 设计 内容 环境 框架 信息 篇文章 配置 网站 过程 项目 自动化 函数 状态 结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 互联网和科技技术 疫情对互联网科技公司影响 互联网 科技公司 善班互联网科技有限公司 卓越科技互联网 招聘 四个字互联网科技公司取名 科技互联网的估值 互联网科技热点资讯 互联网科技项目计划书材料类 互联网科技公司有风险吗 互联网科技产业特征 国大互联网教育科技有限公司工作 四川互联网展示科技馆设计 宇信科技在杭州互联网排第几 卡尔迅互联网科技有限公司 互联网金融运营模式中的金融科技 互联网科技大会大佬 前海云享互联网科技 如何强化互联网金融科技 互联网科技会 网络科技有限互联网 北京互联网科技有限公司 互联网科技股票 长亮科技互联网金融 深圳期待互联网科技 科技类的互联网平台 米聚互联网科技南京有限公司排面 互联网科技公司营业执照怎么办理 南京一网一红互联网科技有限公司
0