python接口自动化(一)什么是接口、接口优势、类型(详解)
目錄:導讀
前言
定義
接口的優(yōu)勢
常見的接口類型
不常見的接口類型(了解即可)
附錄(get和post的區(qū)別)
寫在最后
前言
經(jīng)常聽別人說接口測試,接口測試自動化,但是你對接口,有多少了解和認識,知道什么是接口嗎?它是用來做什么的,測試時候要注意什么?坦白的說,筆者之前也不是很清楚。接下來先看一下接口的定義。
定義
? ? ? ?接口泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內(nèi)部操作分離出外部溝通方法,使其能被內(nèi)部修改而不影響外界其他實體與其交互的方式。
人類與電腦等信息機器或人類與程序之間的接口稱為用戶界面。電腦等信息機器硬件組件間的接口叫硬件接口。電腦等信息機器軟件組件間的接口叫軟件接口。
在計算機中,接口是計算機系統(tǒng)中兩個獨立的部件進行信息交換的共享邊界。這種交換可以發(fā)生在計算機軟、硬件,外部設(shè)備或進行操作的人之間,也可以是它們的結(jié)合。
接口的優(yōu)勢
一、規(guī)范性
接口就是規(guī)范,在整個系統(tǒng)設(shè)計中,涉及到很多層,為了使各個層之間調(diào)用透明話,你只需要知道接口,按照這個接口做你具體做的事情,就可以融合到整個系統(tǒng)中了。
生活中的例子很多,例如:插頭、插座,有標準的規(guī)范告訴你插頭應(yīng)該是幾個腳,插座是幾個孔等等,做插頭、插座的公司就是根據(jù)這個規(guī)范來做插頭、插座,而不需要做完一個插頭就跑遍全世界去試用一下這個插頭做的對不對。
二、擴展性
在項目開發(fā)過程中,由于客戶的需求經(jīng)常變化,如果不采用接口,那么我們必須不停改寫現(xiàn)有的業(yè)務(wù)代碼。改寫代碼可能產(chǎn)生新的BUG,而且改寫代碼還會影響到調(diào)用該業(yè)務(wù)的類,可能全都需要修改,影響系統(tǒng)本身的穩(wěn)定性。到最后,可能會出現(xiàn)代碼凌亂,不易讀懂,
后接手的人無法讀懂代碼,系統(tǒng)的維護工作越來越重,最終可能導致項目失敗。
三、接口在項目就是一個業(yè)務(wù)邏輯,面向接口編程就是先把客戶的業(yè)務(wù)提取出來,作為接口。業(yè)務(wù)具體實現(xiàn)通過該接口的實現(xiàn)類來完成。當客戶需求變化時,只需編寫該業(yè)務(wù)邏輯的新的實現(xiàn)類,不需要改寫現(xiàn)有代碼,減少對系統(tǒng)的影響。從而讓項目具有更大的擴展性。
常見的接口類型
接口是指外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各子系統(tǒng)之間的交互點。包括外部接口、內(nèi)部接口,內(nèi)部接口又包括:上層服務(wù)與下層服務(wù)接口、同級接口。
常見web接口:一類是http協(xié)議的接口,另一類是web service接口(如soup、rmi、rpc協(xié)議)。本文主要介紹http請求接口。
常見的http請求方式包括:get(查)、post(增),除此之外還有put(改)、delete(刪)等。日常工作中見到的最多的是get和post兩種。
? GET:GET可以說是最常見的了,它本質(zhì)就是發(fā)送一個請求來取得服務(wù)器上的某一資源。資源通過一組HTTP頭和呈現(xiàn)據(jù)(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現(xiàn)數(shù)據(jù)。
POST:向服務(wù)器提交數(shù)據(jù)。這個方法用途廣泛,幾乎目前所有的提交操作都是靠這個完成。它用來向指定資源提交數(shù)據(jù)進行處理請求(例如:提交表單和上傳文件),數(shù)據(jù)包被包含在請求體中,post請求可能導致新的資源的建立或者已有的資源的修改。
PUT:這個方法比較少見。HTML表單也不支持這個。本質(zhì)上來講, PUT和POST極為相似,都是向服務(wù)器發(fā)送數(shù)據(jù),但它們之間有一個重要區(qū)別,PUT通常指定了資源的存放位置,而POST則沒有,POST的數(shù)據(jù)存放位置由服務(wù)器自己決定。客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定文檔的內(nèi)容。
?舉個例子:如一個用于提交博文的URL,/addBlog。如果用PUT,則提交的URL會是像這樣的”/addBlog/abc123”,其中abc123就是這個博文的地址。而如果用POST,則這個地址會在提交后由服務(wù)器告知客戶端。目前大部分博客都是這樣的。顯然,PUT和POST用途是不一樣的。具體用哪個還取決于當前的業(yè)務(wù)場景。
DELETE:刪除某一個資源。基本上這個也很少見,不過還是有一些地方比如amazon的S3云服務(wù)里面就用的這個方法來刪除資源。
1)get型接口
格式:請求數(shù)參數(shù)寫在網(wǎng)址后面,用"?"連接,多個參數(shù)之間用"&"連接。如:https://api.douban.com/v2/book/search?q='',這是一個豆瓣查詢圖書信息的開發(fā)api,q='',單引號里就是查詢的參數(shù),如查詢《小王子》這本書的信息,則q='小王子',使用postman工具來試驗一下,如下圖:
?
?場景:get型接口用于獲取信息,多用于查詢數(shù)據(jù),如列表查詢功能,點擊查詢按鈕就調(diào)用一個get接口,然后把信息返回出來
特點:1)請求數(shù)據(jù)量小,2)參數(shù)暴露于url地址中,故存在安全隱患
2)post型接口
說明:向指定資源位置提交數(shù)據(jù)(如提交表單、上傳文件)來進行請求,post請求可能會導致新資源的建立
場景:如注冊、上傳、發(fā)帖等功能,如用戶在豆瓣網(wǎng)站對某本書進行收藏、寫筆記、發(fā)表評論
特點:請求數(shù)據(jù)量大,安全性高
如豆瓣的發(fā)表評論的開放api,見下圖:
?
3)put型接口
說明:put請求用于向指定資源位置上傳最新內(nèi)容
場景:如用戶在豆瓣網(wǎng)站修改對某本書的收藏、修改某篇筆記或修改評論
如豆瓣的修改評論的開放api,見下圖:
?
4)delete型接口
說明:請求服務(wù)器刪除請求里url所標識的資源
場景:如用戶在豆瓣網(wǎng)站取消對某本書的收藏、刪除某篇筆記或刪除評論
如豆瓣的刪除評論的開放api,見下圖:
?
不常見的接口類型(了解即可)
?? 不常見的http請求方式包括:head、connect、options和trace。
??head:HEAD和GET本質(zhì)是一樣的,區(qū)別在于HEAD不含有呈現(xiàn)數(shù)據(jù),而僅僅是HTTP頭信息。換句話說,就是返回響應(yīng)中沒有具體內(nèi)容,只獲取報頭。有的人可能覺得這個方法沒什么用,其實不是這樣的。想象一個業(yè)務(wù)情景:欲判斷某個資源是否存在,我們通常使用GET,但這里用HEAD則意義更加明確。
? connect:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
? options:這個方法很有趣,但極少使用。它用于獲取當前URL所支持的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,值是所支持的方法,如“GET, POST”。允許客戶端查看服務(wù)器的性能。
? trace:回顯服務(wù)器收到的請求,主要用于測試和診斷。
附錄(get和post的區(qū)別)
這個問題,面試中經(jīng)常被提到。簡單來說,可以從三個方面去回到這個區(qū)別:方式、大小、安全
1).方式
方式指的是參數(shù)的傳入方式,GET方法一般是指獲取服務(wù)器上的數(shù)據(jù),參數(shù)直接跟著URL后邊,直接可以放到瀏覽器地址欄里,例如登錄就是采用GET方法。而POST方法是指客戶端給服務(wù)器上提交表單數(shù)據(jù),所以POST是通過表單提交的,例如你網(wǎng)頁上的新用戶的注冊、調(diào)查問卷和答題就是采用POST方法。
2).大小
上面已經(jīng)知道GET是直接在瀏覽器地址欄輸入,由于瀏覽器有限制,一般整個URL的長度可以很長,但是不能超過2049KB的大小限制,而這個POST就沒有大小限制。
3).安全性
由于GET的參數(shù)是在瀏覽器地址欄直接拼接,暴露在互聯(lián)網(wǎng)中,肯定不安全。POST是通過表單數(shù)據(jù)提交,相對比GET方法更安全。
寫在最后
這篇貼子到這里就結(jié)束了,最后,希望看這篇帖子的朋友能夠有所收獲。
都到這了記得三連支持一下吧。
-------------------------------------------------
完整版文檔下載方式:
這些資料,對于從事【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享。
在評論區(qū)和我互動交流或者私?我【軟件測試學習】領(lǐng)取即可,拿走不謝。
-------------------------------------------------
總結(jié)
以上是生活随笔為你收集整理的python接口自动化(一)什么是接口、接口优势、类型(详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: M1芯片Macbook虚拟机安装cent
- 下一篇: php开发的支付宝、微信个人免签支付接口