Web API03-使用python實(shí)現(xiàn)接口測(cè)試

前面2篇文章已經(jīng)簡(jiǎn)單的介紹接口測(cè)試相關(guān)概念和HTTP協(xié)議基礎(chǔ),本篇文章主要就“使用python實(shí)現(xiàn)接口測(cè)試基礎(chǔ)知識(shí)”進(jìn)行展開(kāi)講解,包括使用requests庫(kù)構(gòu)建相應(yīng)的HTTP請(qǐng)求、傳遞URL參數(shù)健蕊、定制請(qǐng)求頭厦瓢、請(qǐng)求消息體以及獲取響應(yīng)內(nèi)容等。希望感興趣的小伙伴可以堅(jiān)持看下去同時(shí)歡迎提出寶貴的意見(jiàn)讓我們一起進(jìn)步楚里!

01:構(gòu)建相應(yīng)的HTTP請(qǐng)求準(zhǔn)備工作

1)構(gòu)建相應(yīng)的HTTP請(qǐng)求可選擇的庫(kù):本次主要使用requests庫(kù)。

內(nèi)置的庫(kù):httplib、urllib2

第三方庫(kù):urllib3眷篇、requests冒萄、pyCurl

2)安裝requests庫(kù):pip install requests

2)官方文檔:http://docs.python-requests.org/zh_CN/latest/

02:構(gòu)建各種HTTP請(qǐng)求方法

1)G E T請(qǐng)求:r=requests.get('http://localhost/xxx/')

2)POST請(qǐng)求:r=requests.post('http://localhost/xxx/')

3)P U T請(qǐng)求:r=requests.put('http://localhost/xxx/')

4)DELETE請(qǐng)求:r=requests.delete('http://localhost/xxx/')

import  requests
(1)構(gòu)建GET請(qǐng)求
res=requests.get('http://localhost/api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20')
(2)構(gòu)建POST請(qǐng)求
res = requests.post('http://localhost/api/mgr/sq_mgr/')
(3)構(gòu)建PUT請(qǐng)求
res=requests.put('http://localhost/api/mgr/sq_mgr/')
(4)構(gòu)建DELETE請(qǐng)求
res=requests.delete('http://localhost/api/mgr/sq_mgr/')
03:傳遞URL參數(shù)(params)

1)概述:如果手工構(gòu)建 URL,那么數(shù)據(jù)會(huì)以鍵/值對(duì)的形式置于 URL 中,跟在一個(gè)問(wèn)號(hào)的后面臊岸。

2)關(guān)鍵字:params

接口文檔URL參數(shù)如下:
(1)請(qǐng)求語(yǔ)法:GET /api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20 HTTP/1.1
(2)url請(qǐng)求參數(shù):
action   填寫(xiě)list_course,表明是要列出所有課程信息
pagenum  表示當(dāng)前要顯示的是第幾頁(yè)尊流,目前固定填寫(xiě)1
pagesize 表示一頁(yè)最多顯示多少條課程信息帅戒,目前固定填寫(xiě)20
(3)python代碼實(shí)現(xiàn)傳遞URL參數(shù):
res=requests.get('http://localhost/api/mgr/sq_mgr/',
                 #傳遞URL請(qǐng)求參數(shù):params
                 params={
                    'action': 'list_course',
                    'pagenum': '1',
                    'pagesize': '20',
                 })
pprint.pprint(res.json())
04:定制請(qǐng)求頭(headers)

1)概述:如果為請(qǐng)求添加 HTTP 頭部,只要簡(jiǎn)單地傳遞一個(gè) dict給headers參數(shù)就可以

2)關(guān)鍵字:headers

接口文檔URL參數(shù)如下:
(1)請(qǐng)求語(yǔ)法:POST/api/mgr/sq_mgr/ HTTP/1.1
(2)請(qǐng) 求 頭:Content-Type:   application/x-www-form-urlencoded
(3)python代碼實(shí)現(xiàn)傳遞HTTP請(qǐng)求頭:
res=requests.post('http://localhost/api/mgr/sq_mgr/',
                 #傳遞HTTP請(qǐng)求頭:headers
                 headers={
                    'Content-Type': 'application/x-www-form-urlencoded',
                 })
05:定制請(qǐng)求消息體(data崖技、json)

1)請(qǐng)求體類(lèi)型為“Content-Type: application/x-www-form-urlencoded”或“xml

①實(shí)現(xiàn)方式:只需簡(jiǎn)單地傳遞一個(gè)字典給 data 參數(shù)逻住。

②關(guān)鍵字:data

2)請(qǐng)求體類(lèi)型為“Content-Type: application/json

①實(shí)現(xiàn)方式:只需簡(jiǎn)單地將字典直接傳遞給json參數(shù)钟哥。

②關(guān)鍵字:json

③請(qǐng)注意:如果消息體內(nèi)容是json則傳遞的是一個(gè)數(shù)據(jù)對(duì)象,會(huì)自動(dòng)把數(shù)據(jù)對(duì)象轉(zhuǎn)換為json格式的字符串

接口文檔請(qǐng)求體內(nèi)容如下:
(1)請(qǐng)求語(yǔ)法:POST /api/mgr/sq_mgr/ HTTP/1.1
(2)請(qǐng)求體類(lèi)型:Content-Type:   application/x-www-form-urlencoded
(3)請(qǐng)求體內(nèi)容:
action  必填  填寫(xiě)add_course瞎访,表明是為了創(chuàng)建課程
data    必填  存儲(chǔ)創(chuàng)建課程的信息腻贰,包括名稱(chēng)、描述扒秸、顯示次序播演。為json格式。例如:
{
  "name":"python",
  "desc":"python基礎(chǔ)課程",
  "display_idx":"4"
}
(4)python代碼實(shí)現(xiàn)傳遞HTTP消息體:
res = requests.post('http://localhost/api/mgr/sq_mgr/',
                    #傳遞HTTP消息體:data
                    data={
                        'action':'add_course',
                        'data':'''
                        {
                        "name":"selenium",
                        "desc":"selenium基礎(chǔ)課程",
                        "display_idx":"1"
                        }'''},
                    #傳遞HTTP消息體:json(直接傳遞)
                    json = {
                        "action": "add_course_json",
                        "data"  : {
                            "name" :"初中政治",
                            "desc" :"初中政治基礎(chǔ)",
                            "display_idx" :"2"}
                    })
06:獲取響應(yīng)內(nèi)容

1)獲取響應(yīng)狀態(tài)碼:res.status_code

2)獲取響應(yīng)消息頭:res.headers

3)獲取響應(yīng)消息頭部分字段:res.headers['Content-Type']

4)獲取JSON響應(yīng)消息體內(nèi)容:res.json()

5)獲取原始響應(yīng)消息體內(nèi)容:res.text

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伴奥,一起剝皮案震驚了整個(gè)濱河市写烤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渔伯,老刑警劉巖顶霞,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锣吼,居然都是意外死亡选浑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)玄叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)古徒,“玉大人,你說(shuō)我怎么就攤上這事读恃∷肀欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵寺惫,是天一觀的道長(zhǎng)疹吃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)西雀,這世上最難降的妖魔是什么萨驶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮艇肴,結(jié)果婚禮上腔呜,老公的妹妹穿的比我還像新娘。我一直安慰自己再悼,他們只是感情好核畴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冲九,像睡著了一般谤草。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天咖刃,我揣著相機(jī)與錄音泳炉,去河邊找鬼憾筏。 笑死嚎杨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氧腰。 我是一名探鬼主播枫浙,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼古拴!你這毒婦竟也來(lái)了箩帚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黄痪,失蹤者是張志新(化名)和其女友劉穎紧帕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桅打,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡是嗜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挺尾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹅搪。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遭铺,靈堂內(nèi)的尸體忽然破棺而出丽柿,到底是詐尸還是另有隱情,我是刑警寧澤魂挂,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布甫题,位于F島的核電站,受9級(jí)特大地震影響涂召,放射性物質(zhì)發(fā)生泄漏坠非。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一芹扭、第九天 我趴在偏房一處隱蔽的房頂上張望麻顶。 院中可真熱鬧,春花似錦舱卡、人聲如沸辅肾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矫钓。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間新娜,已是汗流浹背赵辕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留概龄,地道東北人还惠。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像私杜,于是被迫代替她去往敵國(guó)和親蚕键。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348