目錄
- 目標(biāo)
- 結(jié)合應(yīng)用案例,掌握HTTPRu v3的使用方法
- 掌握測(cè)試用例的錄制生成與編寫(xiě)
- 啟發(fā)測(cè)試框架開(kāi)發(fā)的思路
- 項(xiàng)目背景
- HTTPRunner基礎(chǔ)
- HTTPRunner快速上手
- 企業(yè)級(jí)應(yīng)用案例實(shí)戰(zhàn)
- HTTPRunner的設(shè)計(jì)&實(shí)現(xiàn)
一、項(xiàng)目背景
為什么要開(kāi)發(fā)HTTPRunner
- 工具多&雜
- 接口測(cè)試工具
- 性能測(cè)試工具
- 學(xué)習(xí)成本高
- 團(tuán)隊(duì)協(xié)作難
- 風(fēng)格迥異
- 整合困難
- 交接困難
- 維護(hù)成本高
- 接口變更一個(gè),用例調(diào)整一堆
- 接口測(cè)試腳本和性能測(cè)試腳本獨(dú)立維護(hù)
- 普遍結(jié)局
- 因投入產(chǎn)出比太低、維護(hù)跟不上而荒廢
HTTPRunner的核心目標(biāo)
-
提高投入產(chǎn)出比(ROI)- 任務(wù)拆解
-
少投入
- 工具開(kāi)發(fā)&維護(hù)
- 功能多
- 質(zhì)量高
- 學(xué)習(xí)使用成本
- 編寫(xiě)&調(diào)試測(cè)試用例
- 管理&維護(hù)測(cè)試用例
- 工具開(kāi)發(fā)&維護(hù)
-
高收益
- 實(shí)現(xiàn)接口功能測(cè)試
- 性能測(cè)試腳本復(fù)用
- 兼具持續(xù)集成、線上監(jiān)控
- 輔助手工測(cè)試:自定義生成特定業(yè)務(wù)數(shù)據(jù)
- 快速定位問(wèn)題
-
-
自動(dòng)化測(cè)試核心指標(biāo) - If you cannot measure it, you cannot improve it.
-
測(cè)試用例數(shù):越多越好
- 編寫(xiě)、調(diào)試效率
- 管理、維護(hù)成本
- 學(xué)習(xí)成本、上手難度
-
執(zhí)行頻率:越快越好
-
運(yùn)行便捷性
- IDE
- 命令行
- 平臺(tái)
- Jenkins/CI
-
運(yùn)行效率
- 分布式
- 并行
-
運(yùn)行成功率:越高越好
- 框架穩(wěn)定性
- 用例穩(wěn)定性
- 數(shù)據(jù)依賴
- hook機(jī)制
- setup
- teardown
-
-
-
功能強(qiáng)大 & 簡(jiǎn)單易用
- 功能全面,主流接口測(cè)試工具有的功能都得有
- 使用流暢,用戶的心情十分重要
- 運(yùn)行穩(wěn)定,測(cè)試工具必須要比被測(cè)系統(tǒng)更健壯
二、HTTPRunner基礎(chǔ)
HttpRunner是什么?
- 面向HTTP(S)協(xié)議的通用測(cè)試框架
- 只需編寫(xiě)維護(hù)一份 YAML/JSON/Pytest 腳本,即可實(shí)現(xiàn)自動(dòng)化測(cè)試、性能測(cè)試、線上監(jiān)控、持續(xù)集成等多種測(cè)試需求
- 約定大于配置
- 一站式接口測(cè)試解決方案,不只局限于HTTP(S)
HttpRunner v3新特性
整體:概念更簡(jiǎn)單、功能更易用、生態(tài)更強(qiáng)大
-
pydantic類(lèi)型系統(tǒng)
- https://pydantic-docs.helpmanual.io/
- 替換 jsonschema
- 思想來(lái)源于 golang 的 struct
-
集成pytest
- allure
- fixture hooks
- parameters
- etc.可充分復(fù)用pytest的眾多生態(tài)插件
-
生成pytest用例
- jinjia2模板生成
- black格式化為標(biāo)準(zhǔn)pep8
-
內(nèi)置http web server
- fastapi
- 更加易于進(jìn)行二次開(kāi)發(fā)、平臺(tái)化
-
測(cè)試用例編寫(xiě)語(yǔ)法提示
- 鏈?zhǔn)秸{(diào)用,智能語(yǔ)法提示
- rest-assured
- PyCharm IDE錯(cuò)誤提示
- 鏈?zhǔn)秸{(diào)用,智能語(yǔ)法提示
HttpRunner核心概念
- 測(cè)試用例概念
- https://en.wikipedia.org/wiki/Test_case
- 相對(duì)獨(dú)立
- 核心要素
- 測(cè)試用例組織結(jié)構(gòu)
- image.png
- 測(cè)試用例:有序的步驟集合
- 測(cè)試用例集:無(wú)序的測(cè)試用例集合
- 去除API、testsuite
- 一切皆testcase
-
測(cè)試用例格式
schema: config/teststeps
-
image.png
-
示例
-
debugtalk.py
- 項(xiàng)目根目錄(錨點(diǎn))
- 實(shí)現(xiàn)動(dòng)態(tài)運(yùn)算
項(xiàng)目地址
- GitHub倉(cāng)庫(kù)
- 用戶文檔v3
環(huán)境準(zhǔn)備
-
Python環(huán)境
- 支持 3.6/3.7/3.8
-
venv虛擬環(huán)境
python3 -m venv ~/.venv/hogwartssource ~/.venv/hogwarts/bin/activate
-
安裝HttpRunner
pip install httprunner
-
環(huán)境驗(yàn)證
httprunner -V-
httprunner -h- image.png
-
子命令
hrun -hhar2case -hhmake -h
-
腳手架生成項(xiàng)目
httprunner startproject demo-
目錄結(jié)構(gòu)
- image.png
-
運(yùn)行demo
-
hrun demo /testcases/- image.png
-
三、 HttpRunner快速上手
案例:幕布登錄場(chǎng)景
-
腳本錄制
- Charles / Fiddler /Chrome抓包生成HAR文件
-
腳本生成
- HAR
- har2case:將HAR轉(zhuǎn)換為YAML/JSON腳本
$ har2case x.har # pytest...
- make:將YAML/JSON轉(zhuǎn)換為pytest腳本
-
執(zhí)行腳本
hrun xxx.ymlhrun xxx.json- 等價(jià)于
hmake xxx.ymlpytest xxx_test.py
-
查看運(yùn)行結(jié)果 & 報(bào)告
- 默認(rèn)安裝了pytest-html插件
hrun testcases/mubu.login.yml --html=reports/mubu.login.htmlopen reports/mubu.login.html




