1、什么是接口?
接口,Application Programming Interface(API)
通俗的講 就是HTTP請求
2、什么是接口測試?
接口測試測試組件間接口的一種測試。
主要用於檢測外部系統與系統之間,系統內部各子系統的交互點。
很多前端和后端都是分離的,單獨只從前端驗證,遠遠不夠,繞過前端太容易了,還需要從接口層面進行驗證。
3、需要安裝的模塊:Requests
是Python的一個第三方HTTP庫,然后有可能是這個星球上最好用的http庫了
requests安裝
Windows: 打開cmd命令行,輸入pip install requests,等待安裝完成即可
Linux: (建議使用Python3),終端中輸入pip3 install requests,等待安裝完成即可
Mac: (建議使用Python3), sudo python3 -m pip install requests,等待安裝完成即可
驗證是否安裝成功:
打開命令行,輸入python,在python shell環境下輸入import requests沒有報錯即安裝成功
4、requests的使用
一個最簡單的GET請求:
組裝請求: 請求可能包含url,params(url參數),data(請求數據),headers(請求頭),cookies等,最少必須有url
發送請求,獲取響應:支持get,post等各種方法發送,返回的是一個響應對象
解析響應: 輸出響應文本
簡單實類:
# 導入requests包
import requests
# GET請求
url = "http://www.baidu.com" # 這里只有url,字符串格式
# 2. 發送請求,獲取響應
res = requests.get(url) # res即返回的響應對象
# 3. 解析響應
print(res.text) # 輸出響應的文本
5、Python 接口測試類1(unittest、生成html報告)
文件目錄:test1
6、Python 接口測試類2(unittest、ddt、郵件發送、xlsx、生成html報告)
文件目錄:python_Interface-master
7、Httprunner框架測試接口(json/yaml、生成html報告)
官方使用文檔:
https://cn.httprunner.org/Installation/
接口獲取便捷:
通過Charles獲取到接口導出har文件,然后用命令轉換成json文件
轉換:
har2case apptest1.har 轉換成JSON文件
har2case apptest1.har -2y 轉換成yaml文件
Httprunner 的使用
輸入命令:hrun apptest1.json
DEMO創建
hrun --startproject demo
1、全局變量
"variables": {
"url" : "https://ppweb.haierzhongyou.com"
}
2、引用參數
關鍵字:$參數名$user_id
3、緩存參數。
"extract": [
{"token": "content.data.token"}
],
4、數據驅動
config:
name:
testcases:
create user $username-$password:
testcase: testcases\test_demo.yml
parameters:
- index: ["test", "test1"] --- 單一參數列表
- username-password:
- ["user1", "111111"]
- ["user2", "222222"]
- ["user3", "333333"] --- 多參數列表
- resName-status: ${P(data/account.csv)} ---外部csv文件
5、重復運行
times: 5
6、跳轉運行
"skip": "過濾次接口"
locust性能測試
使用locusts -V查看時,會提示需要先安裝locustio
使用 pip 安裝 locustio 包
pip install locustio
locusts 啟動
使用locusts -f 啟動腳本文件
locusts -f 1234.json
運行完成之后,可以看到locust的web頁面在8089端口啟動,接着在瀏覽器輸入:http://localhost:8089/ 即可訪問
設置模擬用戶、每秒產生(啟動)的虛擬用戶數-點擊啟動按鈕
性能測試參數
Type: 請求的類型,例如GET/POST。
Name:請求的路徑。這里為百度首頁,即:https://www.baidu.com/
request:當前請求的數量。
fails:當前請求失敗的數量。
Median:中間值,單位毫秒,一半的服務器響應時間低於該值,而另一半高於該值。
Average:平均值,單位毫秒,所有請求的平均響應時間。
Min:請求的最小服務器響應時間,單位毫秒。
Max:請求的最大服務器響應時間,單位毫秒。
Content Size:單個請求的大小,單位字節。
reqs/sec:是每秒鍾請求的個數。