Python自動化實(shí)戰(zhàn)之接口請求的實(shí)現(xiàn)
在前文說過,如果想要更好的做接口測試,我們要利用自己的代碼基礎(chǔ)與代碼優(yōu)勢,所以該章節(jié)不會再介紹商業(yè)化的、通用的接口測試工具,重點(diǎn)介紹如何通過 python 編碼來實(shí)現(xiàn)我們的接口測試以及通過 Pycharm 的實(shí)際應(yīng)用編寫一個(gè)簡單接口測試。
使用 Python 發(fā)送 請求
應(yīng)為從最開始寫這個(gè) Python全棧系列 一直使用的就是 python3.x (這里我使用的是 python 3.8 版本) ,實(shí)際上 python 3 本身自帶的就有能夠?qū)崿F(xiàn)發(fā)送請求的模塊:
- http.client
- urllib.request
Python 發(fā)送請求的方式
以上兩個(gè)都可以實(shí)現(xiàn)發(fā)送 http 請求,也就是說它們都可以幫助我們完成接口測試。不過相對于來說它們更偏向于底層,需要更多的定義,所以在使用上面比較的麻煩;
在實(shí)際的工作中,使用的更多的反而是第三方庫 resuests ,為什么會選擇使用 resuests ?那是因?yàn)樗墙?jīng)過二次集成、二次封裝的,它能夠讓我們發(fā)送請求變得更簡單,支持編碼、解碼、會話保持、長鏈接、可以加載 Header等等等等。
這也是我們使用 Python 做接口測試的一個(gè)首選方式,接下來就學(xué)習(xí)一下如何安裝并使用 requests 庫 吧。
requests 庫的配置
安裝 Requests 庫 其實(shí)也非常的簡單,直接在 terminal 終端 執(zhí)行 pip install requests , 見下圖:

也可以通過設(shè)置中心去安裝,在 Windows 系統(tǒng),選擇的是 File --> Settings... ,Mac 系統(tǒng)選擇的是 PyCharm --> Preferences... 如下圖:

如果安裝失敗,或者安裝超時(shí),可以換一個(gè)國內(nèi)的源地址,或者考慮一下 ke xue shang wang 吧。
天行數(shù)據(jù) - 空氣質(zhì)量接口
從天行數(shù)據(jù)網(wǎng)站可以找到公開的 空氣質(zhì)量接口,通過該接口,可以免費(fèi)查詢?nèi)珖鞯爻鞘械目諝赓|(zhì)量。
API詳情如下:
接口地址:http://web.juhe.cn/environment/air/cityair
**返回格式:**json
**請求方式:**get
請求示例:http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值
請求參數(shù)說明:
| 參數(shù) | 是否必填項(xiàng) | 類型 | 說明 |
|---|---|---|---|
| city | yes | string | 城市名稱的中文名稱或拼音,如:上海 或 shanghai |
| key | yes | string | APP key (注冊之后申請?jiān)摻涌诘氖褂?,自動生成一個(gè)key) |

返回參數(shù)說明:
| 名稱 | 類型 | 說明 |
|---|---|---|
| citynow | JSONObject | 當(dāng)前城市的空氣質(zhì)量的最新結(jié)果 |
| lastTwoWeeks | JSONObject | 最近幾周的空氣質(zhì)量數(shù)據(jù)(4周28天) |
| lastMoniData | JSONObject | 各監(jiān)測點(diǎn)的數(shù)據(jù),如果字段返回"—",可能是該監(jiān)測點(diǎn)未監(jiān)測這項(xiàng)數(shù)據(jù)或者有延遲 |
利用 requests 發(fā)送查詢 空氣質(zhì)量接口 請求
實(shí)現(xiàn)發(fā)送請求的三步:
1、組裝請求 (包含 url 、請求的參數(shù)、請求的數(shù)據(jù)、 headers、cookies等等)
2、發(fā)送請求,獲取響應(yīng)
3、解析響應(yīng)、獲取到想要的文本
代碼示例如下:
# coding:utf-8
import requests
'''
天行空氣質(zhì)量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值
'''
url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079" # 定義url
result = requests.get(url) # 使用 requests 包的 get 方法獲取響應(yīng)結(jié)果
print(result.text) # 打印輸出 result 的文字解析
運(yùn)行結(jié)果如下:

url 還支持 param 等一些信息,所以我們在組裝url的時(shí)候,還可以不用像上圖中那樣直接去定義;可以單獨(dú)定義一個(gè) param ,以字典的形式寫入我們要傳入的內(nèi)容。代碼示例如下:
PS:"param" 就是 get 請求方法的 "url" 問號后面的內(nèi)容,示例:"http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值"
# coding:utf-8
import requests
'''
天行空氣質(zhì)量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值
'''
# url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079"
url = "http://web.juhe.cn/environment/air/cityair" # 定義url
param = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"} # 定義param
result = requests.get(url=url, params=param) # 使用 requests 包的 get 方法獲取響應(yīng)結(jié)果
print(result.text) # 打印輸出 result 的文字解析
運(yùn)行結(jié)果如下:

接下來再嘗試一下通過 psot 方法,運(yùn)行的結(jié)果會怎么樣。
代碼示例如下:
# coding:utf-8
import requests
'''
天行空氣質(zhì)量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值
'''
# url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079"
url = "http://web.juhe.cn/environment/air/cityair" # 定義url
# param = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"} # "param" 就是 get 請求方法的 "url" 問號后面的內(nèi)容
data = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"} # data 的內(nèi)容才是 post 方法里需要傳入的參數(shù)
# result = requests.get(url=url, params=param)
result = requests.post(url=url, data=data) # 使用 requests 包的 post 方法獲取響應(yīng)結(jié)果
print(result.text) # 打印輸出 result 的文字解析
運(yùn)行結(jié)果如下:

這里會發(fā)現(xiàn)結(jié)果與 get 方法是一致的,其實(shí)想要測試個(gè)簡單的接口其實(shí)一點(diǎn)都不復(fù)雜… 對不對? 再接下來就準(zhǔn)備開始一套完整的測試自動化測試的實(shí)現(xiàn)吧
以上就是Python自動化實(shí)戰(zhàn)之接口請求的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python接口請求的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python列表插入append(), extend(), insert()用法詳解
在本篇文章里小編給大家整理了關(guān)于python列表插入append(), extend(), insert()用法以及相關(guān)知識點(diǎn),有需要的朋友們參考下。2019-09-09
Python基于最小二乘法實(shí)現(xiàn)曲線擬合示例
這篇文章主要介紹了Python基于最小二乘法實(shí)現(xiàn)曲線擬合,涉及Python基于numpy及scipy庫進(jìn)行曲線擬合操作相關(guān)運(yùn)算技巧,需要的朋友可以參考下2018-06-06
python利用微信公眾號實(shí)現(xiàn)報(bào)警功能
微信公眾號共有三種,服務(wù)號、訂閱號、企業(yè)號。它們在獲取AccessToken上各有不同。接下來通過本文給大家介紹python利用微信公眾號實(shí)現(xiàn)報(bào)警功能,感興趣的朋友一起看看吧2018-06-06
Python按照list dict key進(jìn)行排序過程解析
這篇文章主要介紹了Python按照list dict key進(jìn)行排序過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
python manim實(shí)現(xiàn)排序算法動畫示例
這篇文章主要為大家介紹了python manim實(shí)現(xiàn)排序算法動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Python之日期與時(shí)間處理模塊(date和datetime)
這篇文章主要介紹了Python之日期與時(shí)間處理模塊(date和datetime),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

