接口自動(dòng)化測(cè)試(四):Helloworld入門

一、準(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)求地址):

Chrome F12

這樣我們就可以將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é)果等信息,如下圖:

fiddler

(對(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ā)棧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,908評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,227評(píng)論 25 708
  • 1、大胤水師統(tǒng)轄于兵部,最高指揮機(jī)構(gòu)是水師大都督府,設(shè)水師大都督一名,鄰大將軍銜,爵位視具體戰(zhàn)功而定。現(xiàn)任水師大都...
    法癡l閱讀 558評(píng)論 0 0
  • 或許在很久之前也有一個(gè)時(shí)代叫劍魔的時(shí)代,但是在現(xiàn)在……少啊,基本上打十局,甚至更多的局,一局劍魔都看不見(jiàn)。 劍魔不...
    黃銅刀閱讀 7,423評(píng)論 0 0
  • 這幾天看了iOS組件化構(gòu)架的幾篇文章, 這里引用幾篇文章供大家循序漸進(jìn)的學(xué)習(xí). 理解篇:bang神的逐步分析: h...
    Leopx閱讀 278評(píng)論 0 0