欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Java编写第一个接口自动化程序

程序员文章站 2024-03-21 22:22:34
...

最近很久没更新了,一直在看接口方面的东西,所以现在开始,准备更新了。

从本质来说,我们通常使用的接口测试工具postman,fiddler或者一些其他的在线接口测试,等等都是由java写的,所以我们当然也可以用java来实现发包的过程

首先,我们可以看一下一个注册的接口(此接口是我部署在本地的服务器上,如果你们用的话,可以使用你们公司的接口进行test)

接口地址格式一般是这样的:http://主机地址:端口号/futuremery/mvc/api/模块/接口名

http://localhost:8080/futuremery/mvc/api/member/register
{"status":0,"code":"20103","data":null,"msg":"手机号不能为空"},可以看到如果我们不带请求参数的话,返回的值是显示手机号不能为空的,

现在我们来用fiddler先测试一下已经被注册过的手机号再次注册返回的是什么

使用Java编写第一个接口自动化程序

好,可以看到显示的手机号码已被注册,那么我们现在就来模拟下fiddler发包,并且,拿到响应的数据信息

这里的话我们提一下,用的是maven来管理项目,所以我们需要先配置下pom.xml,这里面我已经给大家准备好了

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.2</version>
		</dependency>

下面先来看一下我们的代码

package auto.api.test;

import java.io.IOException;

import org.apache.http.Header;
import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
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;


public class ApiTest {
		public static void main(String[] args) throws ClientProtocolException, IOException {
			
			//1.发包,准备url
			String url = "http://localhost:8080/futuremery/mvc/api/member/register?mobilephone=13666666666&pwd=123456";
			//2.设置请求方法
			HttpGet get = new HttpGet(url);
			//准备客户端
			CloseableHttpClient httpClient = HttpClients.createDefault();
			//发包
			CloseableHttpResponse response = httpClient.execute(get);
			//验证响应头信息  HTTP/1.1 200 OK 
//			ProtocolVersion  httpVer = response.getProtocolVersion();
			//验证响应头信息  HTTP/1.1 200 OK 
			StatusLine  stateLine = response.getStatusLine();
			 //获取协议版本
			ProtocolVersion httpVersion = stateLine.getProtocolVersion();
			System.out.println(httpVersion);
			//获取状态码
			int stateCode = stateLine.getStatusCode();
			System.out.println( stateCode);
                        //遍历所有的头部信息
			Header[]  allheaders =  response.getAllHeaders();
			for (Header header : allheaders) {
				System.out.println(header.getName() +":"+ header.getValue());
			}		
			System.out.println();
			//响应体,toString方法可以将响应体转换成字符串
			String entityStr =  EntityUtils.toString(response.getEntity());
			System.out.println(entityStr);
			
		}
}

接着我们来看一下控制台的输出,和fiddler测试的结果一致,好的,这就是最简单的接口自动化测试了

HTTP/1.1
200
Server:Apache-Coyote/1.1
Content-Type:application/json;charset=UTF-8
Transfer-Encoding:chunked
Date:Thu, 09 May 2019 08:58:25 GMT

{"status":0,"code":"20110","data":null,"msg":"手机号码已被注册"}