一镊叁、準(zhǔn)備工作
需要做接口測(cè)試鲸阔,肯定得需要一個(gè)已調(diào)通的接口或服務(wù)订晌,在這里我們暫時(shí)就只考慮HTTP的接口吧。由于是練習(xí)诡挂,大家可以在自己的應(yīng)用系統(tǒng)中通過Fiddler抓取請(qǐng)求url碎浇,其實(shí)這個(gè)url就可以近似看作是一個(gè)接口的地址;或者在網(wǎng)上找一個(gè)公開的API璃俗,基于這個(gè)API來做試驗(yàn)奴璃。
1、F12抓取請(qǐng)求url
對(duì)于Web系統(tǒng)城豁,我們可以通過瀏覽器的調(diào)試工具直接獲取到請(qǐng)求url苟穆,比如chrome和IE的F12,F(xiàn)irefox的firebug等等唱星,對(duì)于移動(dòng)端應(yīng)用雳旅,可以通過Fiddler等抓包工具獲取請(qǐng)求url。
如下圖间聊,獲取簡(jiǎn)書個(gè)人主頁(yè)的關(guān)注接口URL攒盈,可以通過Chrome的F12來獲取(按鍵盤F12哎榴,打開調(diào)試工具型豁,操作頁(yè)面僵蛛,查看newwork頁(yè)簽的請(qǐng)求地址):
這樣我們就可以將url拷貝出來:
url:http://www.reibang.com/notifications?type=follows&page=1
說明:?后面部分是參數(shù)
響應(yīng)結(jié)果返回的是json格式的數(shù)據(jù):
挖個(gè)坑:這個(gè)url在未登錄簡(jiǎn)書時(shí),是請(qǐng)求不到預(yù)期結(jié)果的迎变,那么接口測(cè)試如何跳過登錄驗(yàn)證充尉?先挖個(gè)坑在這里,后面章節(jié)專門來講衣形。
2驼侠、Fiddler抓取請(qǐng)求url
Fiddler等抓包工具不僅可以抓Web應(yīng)用的請(qǐng)求,還可以抓移動(dòng)端應(yīng)用的請(qǐng)求(用法:打開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è)公開的API
考慮到有些童鞋可能之前沒基礎(chǔ),一下子搞一個(gè)要登錄的接口榔袋,有點(diǎn)懵周拐,另外也可能沒有注冊(cè)簡(jiǎn)書,用簡(jiǎn)書的API也不太方便凰兑,所以還是要找一個(gè)不用登錄的公開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ū)分開來播急,既然是自動(dòng)化測(cè)試,那么肯定是要用代碼的方式去實(shí)現(xiàn)接口請(qǐng)求與響應(yīng)結(jié)果驗(yàn)證這整個(gè)過程售睹,不然找個(gè)接口工具就可以去驗(yàn)證了桩警。
1. 新建Maven項(xiàng)目
使用eclipse還是IDEA?無所謂昌妹,習(xí)慣哪個(gè)用哪個(gè)捶枢,兩者大同小異沉噩。
2. 配置Maven pom.xml,添加依賴
這一步這一章節(jié)可以省略柱蟀,因?yàn)橛玫氖莏ava.net相關(guān)工具類來實(shí)現(xiàn)http請(qǐng)求,所以暫時(shí)無需導(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术瓮、打開和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)睾蹬酰渴遣皇沁€有很多問題……別急!學(xué)習(xí)要循序漸進(jìn)踩麦,這些疑問在后面會(huì)陸續(xù)解答枚赡。
【下章節(jié)預(yù)告】:接口自動(dòng)化測(cè)試(五):Http框架搭建
原文來自下方公眾號(hào),轉(zhuǎn)載請(qǐng)聯(lián)系作者谓谦,并務(wù)必保留出處贫橙。
想第一時(shí)間看到更多原創(chuàng)技術(shù)好文和資料,請(qǐng)關(guān)注公眾號(hào):測(cè)試開發(fā)棧