httprunner進行介面測試 引數化

2022-07-17 01:06:08 字數 2950 閱讀 9169

1,用例格式

- config

- test

- test

即:全域性配置、用例、用例

config模組裡面定義的是整個文字測試集的變數,即全域性變數

test模組裡面定義的是具體介面請求,下面看個具體例子

2,舉個例子

以某快遞查詢介面為例,新建乙個yaml檔案,命名為test_post_api.yaml

-config:

name: test kuaidi100 api

request:

base_url:

-test:

name: test kuaidi100 onerequest:

url: /query

method: get

params:

type: huitongkuaidi

postid: 350757858666

yaml格式類似與json,可以看成是優雅的json。yaml中,跟python一樣,也是空格縮排表示同一層級,不過沒有python那麼嚴格,只要縮排空格數一樣就是同一級,「-」python讀取出來是list,「#」用來注釋,更多語法可以去官網學習。

config模組

name  本用例集名稱

request  請求全域性變數,包括base_url(公共host)、headers等

base_url  全域性公共host,也可以不定義,用例中寫全url即可

以上全域性配置,除了name,其他都是非必要的,根據需要新增。

test模組

name  本條測試用例的名字

request  請求體

url  請求的路徑,由於全域性變數已經定義好host,這裡就直接填寫後面的路由即可

method  請求方式

params  請求引數

示例是某快遞查詢介面,指令碼初步寫好,接下來開始測試吧,怎麼測試指令碼?

開啟cmd,進入到該檔案目錄,執行命令hrun test_post_api.yaml回車即可。

成功,cool,可以看到一條用例測試通過,而且還在指令碼所在目錄生成了report資料夾,生成的測試報告就放在裡面,報告名字為測試時間戳。報告長這樣,還是蠻清爽的。

點選log,可以檢視詳細日誌

3,斷言

雖然執行成功,但我們無法判斷請求的結果與我們的預期是否一致。這個時候就需要斷言。httprunner中斷言很簡單,通過在用例裡面增加validate引數實現,如下:

那麼怎麼知道如何定義被斷言的資料呢?即上圖中的content.message等。

瀏覽器執行該介面,其返回值是字典(如下,這些字典資料存在content變數裡面),可以直接通過content後面接「.key」獲取value值,再判斷與我們給出的值是否相等,以此判斷用例是否通過。如:content.message斷言值設定為「ok」,如果其對應的value等於「ok」,就表示通過。

方法來讀取csv文字中的資料,也是使用$+變數名引用引數。

值得注意的是,通常來說,乙個csv檔案中會放多列數值,那麼這個時候,各列引數通過「-」連線來讀取引數,如:要傳postid1、name兩列引數,這樣寫就可以postid1-name: $

來來來,測試下,「ran 4 tests in 2.076s」,good。因為csv中有4個引數,用例也執行了4遍,檢視log,4個引數都是csv裡面的,而且是順序的。

6.2、使用自定義函式進行引數化

還是在指令碼下,新建debugtalk.py檔案,注意,這個檔案名字就不能隨便取啦,固定的。

與csv引用類似,指令碼中使用$來引用函式,5表示想要獲取的引數個數,執行結果如下:

至此,httprunner介面測試框架的主要功能、或者說介面測試需要用到的大部分功能、場景,大概說了一遍。這樣做介面測試是不是感覺非常的簡單、優雅呢?

注意,由於這個框架整合了locusts效能測試工具,故還可以非常方便的進行效能測試,與介面測試類似,執行如下命令:locusts -f test_post_api.yaml,瀏覽器開啟http://localhost:8089即可進行效能測試。

最後,這是乙份非常簡單的入門教程,也還算比較全。其中有些細節,官網也沒有給出,寫的時候還是整了蠻久的。其他更多功能、細節,還是請參考官方中文教程**: 原始碼挪步:

httprunner介面自動化

httprunner 整合了 pytest,所以 httprunner v3.x 可以使用 pytest 的所有外掛程式,包括測試報告外掛程式,例如pytest html和alluer pytest。httprunner 安裝之後自帶pytest html外掛程式,當你想生成 html 測試報告時,...

JMeter進行簡單的介面壓測

最近換了工作,新專案比較忙,好久沒更新了。今天正好做了乙個簡單的介面壓測,順便記錄一下。關於jmeter的安裝,我已經寫過了,可以參考 下面寫一下簡單的介面壓測內容 1.本次壓測主要包含兩個介面的壓測,乙個是商品詳情介面,乙個是商品列表介面 4.如果想要從csv中讀取資料傳參,那麼需要新增乙個csv...

利用locustio進行關聯介面的效能測試

locustio通常用來做單介面壓測,指令碼編寫成本低,併發度高。新版locustio對補充了關聯介面的測試場景,利用seq task可以較為快速的定義執行的先後順序,同時利用全域性的queue,實現引數的傳遞。本例模擬停車入場和出場的場景,按照業務邏輯,停車入場後生成乙個訂單號order id,出...