首頁 > 軟體

Python自動化實戰之介面請求的實現

2022-05-30 22:01:54

在前文說過,如果想要更好的做介面測試,我們要利用自己的程式碼基礎與程式碼優勢,所以該章節不會再介紹商業化的、通用的介面測試工具,重點介紹如何通過 python 編碼來實現我們的介面測試以及通過 Pycharm 的實際應用編寫一個簡單介面測試。

使用 Python 傳送 請求

應為從最開始寫這個 Python全棧系列 一直使用的就是 python3.x (這裡我使用的是 python 3.8 版本) ,實際上 python 3 本身自帶的就有能夠實現傳送請求的模組:

  • http.client
  • urllib.request

Python 傳送請求的方式

以上兩個都可以實現傳送 http 請求,也就是說它們都可以幫助我們完成介面測試。不過相對於來說它們更偏向於底層,需要更多的定義,所以在使用上面比較的麻煩;

在實際的工作中,使用的更多的反而是第三方庫 resuests ,為什麼會選擇使用 resuests ?那是因為它是經過二次整合、二次封裝的,它能夠讓我們傳送請求變得更簡單,支援編碼、解碼、對談保持、長連結、可以載入 Header等等等等。

這也是我們使用 Python 做介面測試的一個首選方式,接下來就學習一下如何安裝並使用 requests 庫 吧。

requests 庫的設定

安裝 Requests 庫 其實也非常的簡單,直接在 terminal 終端 執行 pip install requests , 見下圖:

也可以通過設定中心去安裝,在 Windows 系統,選擇的是 File --> Settings... ,Mac 系統選擇的是 PyCharm --> Preferences... 如下圖:

如果安裝失敗,或者安裝超時,可以換一個國內的源地址,或者考慮一下 ke xue shang wang 吧。

天行資料 - 空氣質量介面

從天行資料網站可以找到公開的 空氣質量介面,通過該介面,可以免費查詢全國各地城市的空氣質量。

API詳情如下:

介面地址:http://web.juhe.cn/environment/air/cityair

**返回格式:**json

**請求方式:**get

請求範例:http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值

請求引數說明:

引數是否必填項型別說明
cityyesstring城市名稱的中文名稱或拼音,如:上海 或 shanghai
keyyesstringAPP key (註冊之後申請該介面的使用,自動生成一個key)

返回引數說明:

名稱型別說明
citynowJSONObject當前城市的空氣質量的最新結果
lastTwoWeeksJSONObject最近幾周的空氣質量資料(4周28天)
lastMoniDataJSONObject各監測點的資料,如果欄位返回"—",可能是該監測點未監測這項資料或者有延遲

利用 requests 傳送查詢 空氣質量介面 請求

實現傳送請求的三步:

1、組裝請求 (包含 url 、請求的引數、請求的資料、 headers、cookies等等)

2、傳送請求,獲取響應

3、解析響應、獲取到想要的文字

程式碼範例如下:

# coding:utf-8

import requests

'''
天行空氣質量介面:
    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 方法獲取響應結果

print(result.text)				# 列印輸出 result 的文字解析

執行結果如下:

url 還支援 param 等一些資訊,所以我們在組裝url的時候,還可以不用像上圖中那樣直接去定義;可以單獨定義一個 param ,以字典的形式寫入我們要傳入的內容。程式碼範例如下:

PS:"param" 就是 get 請求方法的 "url" 問號後面的內容,範例:"http://web.juhe.cn/environment/air/cityair?city=城市名稱&key=您申請的APPKEY值"

# coding:utf-8
import requests

'''
天行空氣質量介面:
    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 方法獲取響應結果

print(result.text)									# 列印輸出 result 的文字解析

執行結果如下:

接下來再嘗試一下通過 psot 方法,執行的結果會怎麼樣。

程式碼範例如下:

# coding:utf-8
import requests

'''
天行空氣質量介面:
    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" 問號後面的內容
data = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"}		# data 的內容才是 post 方法裡需要傳入的引數

# result = requests.get(url=url, params=param)
result = requests.post(url=url, data=data)			# 使用 requests 包的 post 方法獲取響應結果

print(result.text)		# 列印輸出 result 的文字解析

執行結果如下:

這裡會發現結果與 get 方法是一致的,其實想要測試個簡單的介面其實一點都不復雜… 對不對? 再接下來就準備開始一套完整的測試自動化測試的實現吧 

以上就是Python自動化實戰之介面請求的實現的詳細內容,更多關於Python介面請求的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com