Python接口測試實戰1(下)- 接口測試工具的使用


如有任何學習問題,可以添加作者微信:lockingfree

課程目錄

Python接口測試實戰1(上)- 接口測試理論
Python接口測試實戰1(下)- 接口測試工具的使用
Python接口測試實戰2 - 使用Python發送請求
Python接口測試實戰3(上)- Python操作數據庫
Python接口測試實戰3(下)- unittest測試框架
Python接口測試實戰4(上) - 接口測試框架實戰
Python接口測試實戰4(下) - 框架完善:用例基類,用例標簽,重新運行上次失敗用例
Python接口測試實戰5(上) - Git及Jenkins持續集成
Python接口測試實戰5(下) - RESTful、Web Service及Mock Server

更多學習資料請加QQ群: 822601020獲取
PDF下載:鏈接:https://pan.baidu.com/s/1OwAa8nl1eeBj8fcrgd3sBA 密碼:e9d8

本節內容

  • 抓包工具的使用
  • Postman的使用

抓包工具的使用

抓包工具簡介

  • Chrome/Firefox 開發者工具: 瀏覽器內置,方便易用
  • Fiddler/Charles: 基於代理的抓包,功能強大,可以手機抓包,模擬弱網,攔截請求,定制響應
    • Fiddler: 免費,只支持Win
    • Charles: 收費,支持Win/Linux/Mac
  • wireshark/tcpdumps:給予網卡層的抓包,數據量大,可以抓取tcp/udp等多種協議的數據包(需要做好過濾)
    • wireshark: 支持Win/Linux/Mac
    • tcpdumps: Linux抓包命令,功能強大,常用作服務端抓包

什么是代理?
正向代理

正向代理與反向代理
正向代理與反向代理

  • 正向代理中, 代理和客戶端在一個局域網內,對服務器透明
  • 反向帶來中,代理和服務器在一個局域網內,對客戶端透明

例如:使用代理訪問Google屬於正向代理,通過不同的域名通過Nginx向同一台服務器請求不同的網站屬於反向代理

  • 反向代理可以做負載均衡
  • 反省代理接口測試一般要先綁定本地hosts

怎么手動添加代理?

  • 啟動代理服務器,如開啟Postman的代理服務(本機ip,默認端口5555)
  • Win設置->代理 -> 配置代理ip和域名

手機設置上網代理(手機抓包)

  • 筆記本和手機使用同一wifi上網
  • 筆記本上啟動代理服務器,如開啟Postman的代理服務(本機ip,默認端口5555)
  • 手機上長按wifi->選擇管理網絡或高級-> 手動配置代理 -> 配置代理ip和域名

** 綁定hosts(適用於反向代理)**

  • Win: notepad C:\Windows\System32\drivers\etc\hosts
  • Linux: vim /etc/hosts(格式: ip 域名)

Chrome開發者工具

  • Elements: HTML元素面板,用於定位查看元素源代碼
  • Console: js控制台面板,js命令行,查看前端日志
  • Sources: 資源面板,用於斷點調試js
  • Network: 請求信息面板,查看請求及響應信息
  • Timeline: 時間線面板,記錄網站生命周期內所發生的各類事件
  • Profiles: 事件詳情面板
  • Application: 本地存儲,Session存儲等資源信息
  • Secuity: 判斷當前網頁是否安全
  • Audits: 網絡性能診斷

Network面板
Network面板

  1. Console: 外觀及功能控制
    • 錄制:記錄或停止記錄請求
    • 清空: 清空所有請求
    • 抓取快照:按幀捕獲屏幕事件
    • 過濾: 請用關閉過濾功能
    • 搜索:搜索請求
    • Group by frame:按框架分組
    • Preserve log:頁面重載時保留請求
    • Disable cache:禁用緩存
    • Offline:斷網及弱網模擬
  2. Filters: 請求過濾器
  3. Overview: 資源時間軸
  4. Requests Table: 請求列表
    • Name: 資源名稱
    • Status: HTTP狀態碼
    • Initiator: 請求源
    • Size: 從服務器下載的文件和請求的資源大小。如果是從緩存中取得的資源則該列會顯示(from cache)
    • Timeline: 顯示所有網絡請求時間狀態軸
  5. Summary: 請求總數,數據傳輸量,加載時間信息
    • DOMContentLoaded:頁面上DOM完全加載並解析完畢
    • load:頁面上所有DOM、CSS、JS、圖片完全加載完畢

導出請求:右擊請求 -> Copy -> Copy as fetch / Copy as cUrl

Fiddler簡介

Fiddler 4.6 下載 http://www.downza.cn/soft/234727.html

為什么使用Fiddler?

  • 可以抓到請求數據,查看Raw格式/表單格式/Json/XML格式
  • 可以攔截和修改請求
  • 更強大的過濾器
  • 可以抓取Postman/接口腳本發送的請求,方便調試
  • 可以抓包手機請求 ...

Fiddler主界面
Fiddler的主界面分為 工具面板、會話面板、監控面板、狀態面板
Fiddler主界面

  • Inspectors: 檢查員
    • Raw:請求的原始格式
    • WebForm: 請求的表單格式
    • Json:請求的Json格式請求
    • XML:請求的XML格式
  • AutoResponsder: 自動回復,可用於構造響應,Mock,不修改服務器文件調試接口
  • Composer: 設計者, 發送和調試請求
  • FidderScript:
  • Filters: 過濾器
    • Hosts: 按服務器過濾
    • Clients Process: 按客戶端程序過濾
    • Request Headers: 按請求頭過濾
    • Breakpoints: 設置斷點
    • Response Status Code: 按狀態碼過濾
    • Response Type and Size: 按響應類型及大學過濾
    • Response Headers: 按響應頭過濾

自動斷點設置
菜單Rules -> Automatic Breakpoints -> Before Requests/After Requests

手機抓包
安裝fiddler的筆記本和手機使用同一wifi -> 手機長按該wifi,選擇高級 -> 添加代理 ip為筆記本ip, 端口為8888 -> 筆記本開啟fiddler, 手機端訪問網頁

參考: Fiddler詳細教程

服務端抓包 - tcpdumps

Postman的使用

常見接口測試工具

  • Postman: 簡單方便的接口調試工具,便於分享和協作。具有接口調試,接口集管理,環境配置,參數化,斷言,批量執行,錄制接口,Mock Server, 接口文檔,接口監控等功能
  • JMeter: 開源接口測試及壓測工具,支持Linux及無界面運行
  • LR: 商業版接口性能測試工具,簡單易用,功能強大
  • SoupUI: 開源,WebService接口常用測試工具,也可以測試Rest接口及接口安全

新版Postman使用簡介

Postman 6.1.4 獨立安裝版 下載 http://www.downza.cn/soft/205171.html

Postman主界面

工具欄

  • New: 新建,可以新建Request請求,Collection請求集,環境等等
  • Import: 導入,可以導入別人導出的請求集
  • Runner: 運行一個請求集(批量執行)
  • Invite: 邀請(需要注冊,邀請進行協作)
  • 同步圖標: (需要注冊,同步你的項目到雲端)
  • 抓包圖標: 抓包/捕獲請求,用於開啟Postman代理, 手動設置代理(或手機代理)后可抓包/錄制請求
  • 設置圖標: Postman設置
  • 消息圖標: 官方及協助消息
  • 收藏圖標: 我的收藏(需要注冊)
  • 雲端圖標: 用戶雲端數據(需要注冊)

接口管理區

  • History: 請求歷史記錄,可以查詢到之前的請求記錄
  • Collections: 接口集,相當於一個接口項目或測試計划,接口集中可以建立無限極子文件夾,用於對接口進行分組管理

環境管理區

  • 環境切換:用於切換環境
  • 環境預覽:用於快速預覽環境中的所有變量
  • 環境管理:用於添加修改環境及環境變量,以及全局變量

什么是環境
接口完整地址 = 服務地址 + 接口地址, 如

www.sojson.com + /open/api/weather/json.shtml

環境是一套配置,包含許多環境變量。在接口測試中,根據部署在不同的服務器上,服務器地址有可能不同,而同一個接口,接口地址是不變的。為了測試部署在不同服務器上的同一套接口,我們可以建立不同的環境,不同環境中host變量使用不同的地址

接口設計區
可以通過上方tab邊上的+號,新建多個請求。接口設計區從上到下分為請求區和響應區

  • 請求區
    • 請求地址行:可以選擇請求方法(GET/POST/...),填寫請求地址,發送請求和保存請求到測試集
    • 請求數據區:分為授權,請求頭,請求數據,請求發送前執行的腳本(用於准備數據),請求結束后執行的腳本(用於斷言)
  • 響應區:
    • 響應內容: 可以查看Pretty(美化格式),Raw(原始格式),Preview(HTML預覽格式)
    • 響應Cookie
    • 響應頭
    • 測試結果,對應請求中Tests中設置的斷言

Postman主界面功能

Collection請求集
測試集是Postman中接口管理的一個“整體”單位,運行、導出、分享等都是基於測試集的。

  • 新建測試集: New按鈕->Collection 或 直接點擊測試集列表上方的新建測試集按鈕
    新建測試集
    • 授權: 測試集及其子文件夾下的接口統一使用該授權,不用每個接口再都單獨設置一遍
    • 請求前腳本: 測試集的每個接口公用的請求前腳本
    • 請求后斷言: 測試集每個接口公用的請求后腳本
    • 請求集變量: 請求集中公用的一些變量
  • 子文件夾
    子文件夾的屬性中同樣擁有描述,授權,請求前腳本,和請求后斷言(沒有變量,一個請求集的變量統一管理),實現了不同范圍(Scope)的Fixture功能。
  • 請求集導出:請求集可以導出並發送給別人(不攜帶環境信息),別人通過導入來使用你的接口
  • 請求集分享: 請求集直接分享給別人(雙方都需要注冊)

** 環境管理**
新建環境
我們可以環境中設置多個變量,以供在請求中使用
環境變量使用方法:
選擇環境,在請求URL或者請求Body里使用{{變量名}}來使用環境變量,變量可以在請求Body的各種格式中使用,但不能直接在請求前腳本(Pre-request Script)和請求后腳本(Tests)中使用
環境變量的使用

環境管理中還可以點擊“Global”添加全局變量,環境變量只有當選擇了該環境時生效,全局變量在任何環境中生效,測試集中的變量只在當前測試集生效,當測試集變量,環境變量,全局變量有重復的變量名時,優先級為:環境變量>全局變量>測試集變量

Params使用
當請求URL中參數很多時,不方便進行添加和查看,可以點擊URL輸入框后的Params按鈕,以表格的方式添加變量及值,從表格添加后,變量和值會自動添加到URL中
添加URL參數

請求設計

  • 授權:如果接口需要授權,可以在該頁面設置授權方式(type)和授權信息
  • Header: 請求頭,可以設置請求類型(Content-Type)和Cookie
  • Body: 請求數據
    • form-data:混合表單,支持上傳文件
    • x-www-form-urlencoded:文本表單
    • raw:原始格式,支持JSON/XML格式(后面可選擇)
    • binary: 二進制格式,用於發送二進制數據流
  • Pre-request Script: 請求前腳本,Javascript語法,用於在發送請求前生成一些動態數據或做一些處理
  • Tests:請求后腳本,Javascript語法,用於請求返回后做一些處理或斷言結果

Postman發送各種格式請求的方法:
注意:選擇不同的請求可是,會自動在Header中添加Content-Type信息
混合表單請求
傳統表單請求
JSON格式請求
XML請求

Tests斷言

  • HTTP狀態碼斷言:
tests["HTTP狀態碼200"]=responseCode.code == 200;
  • 響應包含內容斷言:
tests["狀態碼200"] = responseBody.has("登錄成功");

接口樣例:
POST https://demo.fastadmin.net/admin/index/login.html 用戶名/密碼: admin/123456
接口樣例
斷言方法

  • JSON響應斷言
var jsonData = JSON.parse(responseBody);
tests["code為200"] = jsonData.code==200
tests["msg為success"] = jsonData.msg == "success"

接口樣例:
GET http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好
JSON響應斷言

Runner: 測試集批量執行

  • 支持設置迭代次數
  • 支持加載csv或json類測試數據

操作方法:
如https://demo.fastadmin.net/admin/index/login.html接口

  • 新建一個Collection,比如名稱Demo2
  • 填入URL:https://demo.fastadmin.net/admin/index/login.html, 選擇POST方法
  • 請求數據(Body)格式選x-www-form-urlecoded,請求數據填寫username {{username}} password {{password}},這里使用了兩個變量來做參數化

請求設置

  • 保存請求到Demo2中
  • 在電腦上新建一個data.csv文件,第一行為變量名,下面是數據,如下圖

數據文件

  • 點擊Postman工具欄的Runner按鈕,Collection選擇Demo2, Data選擇數據文件data.csv, 點擊運行Demo2

Runner配置

運行結果

此為北京龍騰育才 Python高級自動化(接口測試部分)授課筆記
課程介紹
想要參加現場(北京)/網絡課程的可以聯系作者微信:lockingfree

  1. 高效學習,快速掌握Python自動化所有領域技能
  2. 同步快速解決各種問題
  3. 配套實戰項目練習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM