一、準(zhǔn)備工作
需要做接口測(cè)試,肯定得需要一個(gè)已調(diào)通的接口或服務(wù),在這里我們暫時(shí)就只考慮HTTP的接口吧。由于是練習(xí),大家可以在自己的應(yīng)用系統(tǒng)中通過(guò)Fiddler抓取請(qǐng)求url,其實(shí)這個(gè)url就可以近似看作是一個(gè)接口的地址;或者在網(wǎng)上找一個(gè)公開(kāi)的API,基于這個(gè)API來(lái)做試驗(yàn)。
1、F12抓取請(qǐng)求url
對(duì)于Web系統(tǒng),我們可以通過(guò)瀏覽器的調(diào)試工具直接獲取到請(qǐng)求url,比如chrome和IE的F12,F(xiàn)irefox的firebug等等,對(duì)于移動(dòng)端應(yīng)用,可以通過(guò)Fiddler等抓包工具獲取請(qǐng)求url。
如下圖,獲取簡(jiǎn)書(shū)個(gè)人主頁(yè)的關(guān)注接口URL,可以通過(guò)Chrome的F12來(lái)獲取(按鍵盤F12,打開(kāi)調(diào)試工具,操作頁(yè)面,查看newwork頁(yè)簽的請(qǐng)求地址):
這樣我們就可以將url拷貝出來(lái):
url:http://www.lxweimin.com/notifications?type=follows&page=1
說(shuō)明:?后面部分是參數(shù)
響應(yīng)結(jié)果返回的是json格式的數(shù)據(jù):
挖個(gè)坑:這個(gè)url在未登錄簡(jiǎn)書(shū)時(shí),是請(qǐng)求不到預(yù)期結(jié)果的,那么接口測(cè)試如何跳過(guò)登錄驗(yàn)證?先挖個(gè)坑在這里,后面章節(jié)專門來(lái)講。
2、Fiddler抓取請(qǐng)求url
Fiddler等抓包工具不僅可以抓Web應(yīng)用的請(qǐng)求,還可以抓移動(dòng)端應(yīng)用的請(qǐng)求(用法:打開(kāi)Fiddler后,在瀏覽器的操作,對(duì)應(yīng)的請(qǐng)求記錄都會(huì)在Fiddler中顯示,移動(dòng)端需要額外設(shè)置下Fiddler和手機(jī)代理),F(xiàn)iddler會(huì)比較直觀的列出請(qǐng)求的域名、url、狀態(tài)、請(qǐng)求信息、響應(yīng)結(jié)果等信息,如下圖:
(對(duì)于Fiddler的基礎(chǔ)用法還不熟悉? 可以百度找教程看,基礎(chǔ)的用法很簡(jiǎn)單的,相信要進(jìn)入到接口自動(dòng)化測(cè)試的童鞋,這個(gè)基礎(chǔ)肯定都有了吧)
3、找一個(gè)公開(kāi)的API
考慮到有些童鞋可能之前沒(méi)基礎(chǔ),一下子搞一個(gè)要登錄的接口,有點(diǎn)懵,另外也可能沒(méi)有注冊(cè)簡(jiǎn)書(shū),用簡(jiǎn)書(shū)的API也不太方便,所以還是要找一個(gè)不用登錄的公開(kāi)API。隨便google了一下,找到了一個(gè)比較穩(wěn)定的查詢?nèi)嗣駧沤趨R率的接口:http://api.fixer.io/latest?base=CNY,在瀏覽器中請(qǐng)求下,看下效果:
二、進(jìn)入正題
首先對(duì)于接口自動(dòng)化測(cè)試,我們要和利用接口工具請(qǐng)求接口測(cè)試區(qū)分開(kāi)來(lái),既然是自動(dòng)化測(cè)試,那么肯定是要用代碼的方式去實(shí)現(xiàn)接口請(qǐng)求與響應(yīng)結(jié)果驗(yàn)證這整個(gè)過(guò)程,不然找個(gè)接口工具就可以去驗(yàn)證了。
1. 新建Maven項(xiàng)目
使用eclipse還是IDEA?無(wú)所謂,習(xí)慣哪個(gè)用哪個(gè),兩者大同小異。
2. 配置Maven pom.xml,添加依賴
這一步這一章節(jié)可以省略,因?yàn)橛玫氖莏ava.net相關(guān)工具類來(lái)實(shí)現(xiàn)http請(qǐng)求,所以暫時(shí)無(wú)需導(dǎo)入其他依賴包。
3. 新建package及測(cè)試類
項(xiàng)目結(jié)構(gòu)如下圖:
4. 代碼實(shí)現(xiàn)
具體的代碼實(shí)現(xiàn)步驟我在代碼中都加了很詳細(xì)的注釋,大家直接看代碼就行了。
package com.alany.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* @date: 2017年12月4日
* @author: alany
*
*/
public class ApiRequestTest {
public static void main(String[] args){
String url = "http://api.fixer.io/latest?base=CNY";
try {
//1、創(chuàng)建URL
URL reqUrl = new URL(url);
//2、打開(kāi)和URL之間的連接
URLConnection connection = reqUrl.openConnection();
//3、設(shè)置通用的請(qǐng)求屬性,可選
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36");
//4、建立連接
connection.connect();
//5、獲取響應(yīng)結(jié)果
BufferedReader in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
response.append(line);
}
System.out.println(response.toString());
//6、用完了記得關(guān)閉輸入流
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. 測(cè)試運(yùn)行
運(yùn)行一下看下結(jié)果:
{"base":"CNY","date":"2017-12-01","rates":{"AUD":0.19978,"BGN":0.24898,"BRL":0.49425,"CAD":0.19479,"CHF":0.14883,"CZK":3.2494,"DKK":0.94741,"GBP":0.11218,"HKD":1.1821,"HRK":0.96183,"HUF":39.949,"IDR":2047.5,"ILS":0.52828,"INR":9.7586,"JPY":17.021,"KRW":163.91,"MXN":2.8254,"MYR":0.61896,"NOK":1.2572,"NZD":0.22086,"PHP":7.6222,"PLN":0.53633,"RON":0.58949,"RUB":8.8728,"SEK":1.2665,"SGD":0.20387,"THB":4.937,"TRY":0.59475,"USD":0.1513,"ZAR":2.0739,"EUR":0.12731}}
ok,普通的get接口請(qǐng)求就這樣實(shí)現(xiàn)了,上面實(shí)現(xiàn)的get請(qǐng)求方式,要是是post呢,那該怎么實(shí)現(xiàn)?上面只是拿到響應(yīng)結(jié)果,怎么跟預(yù)期結(jié)果對(duì)比校驗(yàn)?zāi)兀渴遣皇沁€有很多問(wèn)題……別急!學(xué)習(xí)要循序漸進(jìn),這些疑問(wèn)在后面會(huì)陸續(xù)解答。
【下章節(jié)預(yù)告】:接口自動(dòng)化測(cè)試(五):Http框架搭建
原文來(lái)自下方公眾號(hào),轉(zhuǎn)載請(qǐng)聯(lián)系作者,并務(wù)必保留出處。
想第一時(shí)間看到更多原創(chuàng)技術(shù)好文和資料,請(qǐng)關(guān)注公眾號(hào):測(cè)試開(kāi)發(fā)棧