當你接觸到了Requests類庫触徐,你就已經(jīng)掌握了Python接口自動化測試框架的終極奧義

???????從本期開始咪鲜,將開啟《保姆級Pytest接口自動化測試框架實戰(zhàn)指南》系列。
???????本文系列文章中第一期撞鹉,用于我們項目中接口調(diào)用之Requests說明疟丙。

前言

???????為什么筆者大言不慚的說Requests就是接口自動化測試的終極奧義呢?因為在接口測試中鸟雏,對接口的請求處理是最基本的享郊,也是最核心的,掌握了最基本的接口請求處理崔慧,其他花里胡哨的功能都是錦上添花而已拂蝎,那么如何在Python中進行接口請求呢穴墅?那么本文將給大家介紹Python中的接口請求秘訣惶室。
???????這里我們使用的是Requests類庫,它是使用Python語言編寫的一個用于在Python環(huán)境中發(fā)出標準HTTP請求的模塊玄货,簡單易用皇钞,是接口測試必備神器。
???????官網(wǎng)中對requests的介紹是:for human beings

官方介紹

使用到的工具
  • 編程語言:?Python 3.8
  • 編譯器:??Pycharm
  • Python類: ?Requests

1. HTTP 請求介紹

???????在了解Requests之前我們先看看HTTP的簡單介紹松捉。

???????我們知道夹界,一個 HTTP 請求由三部分構(gòu)成:
??????? - 請求URL:包含請求方法(常用的有 GET, POST)、請求地址和 HTTP 協(xié)議版本
??????? - 請求頭:包含一個或多個鍵值對
??????? - 請求報文:(可選隘世,例如GET請求參數(shù)在URL中設置就無需報文可柿,而POST方法的報文可以是一個json文本)

HTTP請求組成

2. Requests介紹

???????Requests提供了幾乎所有 HTTP 方法的功能:GETOPTIONS丙者、HEAD复斥、POSTPUT械媒、PATCH目锭、DELETE评汰,另外,它提供了 headers 參數(shù)讓我們根據(jù)需求定制請求頭痢虹。

2.1 Requests庫的幾個主要方法

方法名 方法作用
requests.request() 構(gòu)造一個請求被去,支持以下各種方法
requests.head() 獲取html頭部信息的主要方法
requests.get() GET請求的方法
requests.post() POST請求的方法
requests.put() PUT請求的方法
requests.patch() PATCH請求的方法:用于交局部修改的請求
requests.delete() DELETE請求的方法:用于刪除請求

???????這其中GET、POST這兩個方法是我們平時最常用的方法奖唯,我們下面也將對GET惨缆、POST這兩個方法做一個簡單的介紹。

3. requests.get()

使用方法:requests.get(url, params, **kwargs)

  • url: 接口請求地址
  • params: 請求的參數(shù)臭埋,即url中的額外參數(shù)踪央,可選。
  • **kwargs: 12個控制訪問的參數(shù)

requests.get()方法中的的url參數(shù)能從字面意思了解其功能瓢阴,我們這邊來主要講講params**kwargs參數(shù):

  • params:字典或字節(jié)序列畅蹂, 作為參數(shù)增加到url中,使用這個參數(shù)可以把一些鍵值對以?key1=value1&key2=value2的模式增加到url中
例如:
key_value = {'key1':' values', 'key2': 'values'} 
response = requests.get('http://www.python123.abc', params=key_value)
  • **kwargs:用于控制訪問的參數(shù),上面我們提到的params也是屬于其控制范圍荣恐,我們再介紹幾個常用的參數(shù)

???????1. data:數(shù)據(jù)格式為字典液斜,字節(jié)序或文件對象,重點作為向服務器提供或提交資源是提交叠穆,少漆,作為request的內(nèi)容,與params不同的是硼被,data提交的數(shù)據(jù)并不放在url鏈接里示损, 而是放在url鏈接對應位置的地方作為數(shù)據(jù)來存儲。嚷硫,它也可以接受一個字符串對象检访。

???????2. json:數(shù)據(jù)格式為json,也是經(jīng)常使用的數(shù)據(jù)格式仔掸,他是作為內(nèi)容部分可以向服務器提交脆贵。

例如:
key_value = {'key1': 'value1'} 
response = requests.post('http://www.python123.abc', json=key_value)

???????3. headers:數(shù)據(jù)格式為字典,是向url訪問時所發(fā)起的http的請求頭參數(shù)起暮。

例如:
http_headers = {'Content-Type': 'application/json'} 
response = requests.post('http://www.python123.abc', headers=http_headers)

???????4. cookies:數(shù)據(jù)格式為字典或CookieJar卖氨,指的是從http中解析cookie

???????5. auth:數(shù)據(jù)格式為元組,用來支持http認證功能

???????6. timeout:數(shù)據(jù)格式為一個數(shù)值,用于設定超時時間, 單位為秒(當發(fā)起一個get請求時可以設置一個timeout時間呐萨, 如果在timeout時間內(nèi)請求內(nèi)容沒有返回, 將產(chǎn)生一個timeout的異常)系吭。

GET請求方式示例

4. requests.post()

post(url, data, json, **kwargs)

  • url: 接口請求地址
  • data,json: 請求的參數(shù)残腌。
  • **kwargs: 12個控制訪問的參數(shù)

???????這其中data村斟,json贫导,**kwargs 這幾個參數(shù)方法已經(jīng)在上方有所介紹,只是接口請求方法已經(jīng)在方法名中有所體現(xiàn)蟆盹,請求方式為POST孩灯。
???????post接口請求與get請求不同點在于請求參數(shù)是存放在請求體中的,通常是一個xmljson格式的報文載體逾滥。

POST請求url和請求報文示例

POST請求headers示例

5. Response對象

???????既然有HTTP請求信息峰档,那么就有HTTP返回信息,下面我們再介紹一下 response對象寨昙。

  • response
response對象有以下屬性:
屬性名 屬性說明
response.status_code http請求的返回狀態(tài)讥巡,例如200則表示請求成功
response.text http響應內(nèi)容的字符串形式,即接口返回的報文主體
response.encoding 從http header 中猜測的相應內(nèi)容編碼方式
response.apparent_encoding 從內(nèi)容中分析出的響應內(nèi)容編碼方式(備選編碼方式)
response.content http響應內(nèi)容的二進制形式
response對象還有以下方法:
方法名 方法作用
response.json() 將接口返回報文信息解析為json格式的報文
responseiter_content() 配置stream=True舔哪,指定chunk_size大小
response.iter_lines() 配置stream=True欢顷,每次返回一行
response.raise_for_status() 控制返回狀態(tài)碼為400-500之間將拋出異常
response.close() 關閉請求

??????? response對象的方法使用比較簡單,看方法名即可在項目中靈活使用捉蚤。

6. 綜合示例

??????? 下面的示例是使用GET方式請求接口抬驴,將返回信息處理成json格式,通過節(jié)點名稱的方式獲取對應節(jié)點value值并返回缆巧。

    @staticmethod
    def get_singerlist():
        """
        獲取接口返回報文中的歌手列表
        :return:
        """
        global singerlist
        url_singerlist = CommonInfo().get_url_singerlist()
        response = requests.get(url=url_singerlist)
        jsonres = response.json()

        singerlist = jsonres['singerList']['data']['singerlist']

        return singerlist
綜合示例

總結(jié)

???????以上就是我們使用 Requests類庫在Python中進行接口請求的簡單說明布持,還是比較簡單易懂的,該終極奧義是我們本系列文章的基礎陕悬,其他功能都是基于此基本上進行拓展開來的题暖,Requests類庫還有其他很多豐富的功能等待各位去發(fā)掘和探索,在此不做詳細介紹了捉超。
???????下一期將進行requests項目實戰(zhàn)胧卤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狂秦,隨后出現(xiàn)的幾起案子灌侣,更是在濱河造成了極大的恐慌推捐,老刑警劉巖裂问,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牛柒,居然都是意外死亡堪簿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門皮壁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椭更,“玉大人,你說我怎么就攤上這事蛾魄÷瞧伲” “怎么了湿滓?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長舌狗。 經(jīng)常有香客問我叽奥,道長,這世上最難降的妖魔是什么痛侍? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任朝氓,我火速辦了婚禮,結(jié)果婚禮上主届,老公的妹妹穿的比我還像新娘赵哲。我一直安慰自己,他們只是感情好君丁,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布枫夺。 她就那樣靜靜地躺著,像睡著了一般绘闷。 火紅的嫁衣襯著肌膚如雪筷屡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天簸喂,我揣著相機與錄音毙死,去河邊找鬼。 笑死喻鳄,一個胖子當著我的面吹牛扼倘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播除呵,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼再菊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颜曾?” 一聲冷哼從身側(cè)響起纠拔,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泛豪,沒想到半個月后稠诲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡诡曙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年臀叙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片价卤。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劝萤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慎璧,到底是詐尸還是另有隱情床嫌,我是刑警寧澤跨释,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厌处,受9級特大地震影響煤傍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘱蛋,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一蚯姆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洒敏,春花似錦龄恋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至函荣,卻和暖如春显押,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背傻挂。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工乘碑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人金拒。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓兽肤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绪抛。 傳聞我的和親對象是個殘疾皇子资铡,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

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