最近很久沒更新了,一直在看接口方面的東西,所以現在開始,準備更新了。
從本質來說,我們通常使用的接口測試工具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先測試一下已經被註冊過的手機號再次註冊返回的是什麼
好,可以看到顯示的手機號碼已被註冊,那麼我們現在就來模擬下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":"手機號碼已被註冊"}