網站首頁 編程語言 正文
在前文說過,如果想要更好的做接口測試,我們要利用自己的代碼基礎與代碼優勢,所以該章節不會再介紹商業化的、通用的接口測試工具,重點介紹如何通過 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值
請求參數說明:
參數 | 是否必填項 | 類型 | 說明 |
---|---|---|---|
city | yes | string | 城市名稱的中文名稱或拼音,如:上海 或 shanghai |
key | yes | string | APP key (注冊之后申請該接口的使用,自動生成一個key) |
返回參數說明:
名稱 | 類型 | 說明 |
---|---|---|
citynow | JSONObject | 當前城市的空氣質量的最新結果 |
lastTwoWeeks | JSONObject | 最近幾周的空氣質量數據(4周28天) |
lastMoniData | JSONObject | 各監測點的數據,如果字段返回"—",可能是該監測點未監測這項數據或者有延遲 |
利用 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 方法是一致的,其實想要測試個簡單的接口其實一點都不復雜… 對不對? 再接下來就準備開始一套完整的測試自動化測試的實現吧?
原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/125047279
相關推薦
- 2022-12-04 pytorch從頭開始搭建UNet++的過程詳解_相關技巧
- 2023-03-29 SVM算法的理解及其Python實現多分類和二分類問題_python
- 2022-08-18 nginx之queue的具體使用_nginx
- 2022-04-10 Blazor路由與頁面導航開發介紹_基礎應用
- 2022-06-07 ASP.NET?Core服務生命周期_基礎應用
- 2022-05-23 c++?qt自定義搜索編輯框的實現方法_C 語言
- 2022-08-12 Python使用Opencv打開筆記本電腦攝像頭報錯解問題及解決_python
- 2022-09-02 C語言sizeof與字符串處理與動態內存分配及main函數參數詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支