自動化測試===Httprunner測試框架介紹


項目地址:

 

https://github.com/HttpRunner/HttpRunner

中文手冊:

http://cn.httprunner.org/

 

首先是環境搭建:

pip install httprunner

或者

pip3 install httprunner

 

安裝完成后cmd執行以下命令,有返回則成功:

 hrun -V

>>>0.9.7

har2case -V

>>>0.1.4

 

測試准備

抓包分析

在開始測試之前,我們需要先了解接口的請求和響應細節,而最佳的方式就是采用 Charles Proxy 或者 Fiddler 這類網絡抓包工具進行抓包分析(我個人強推Charles)。

我們以某快遞查詢接口為例,在本案例中,我們先進行權限校驗,然后成功創建一個用戶,對應的網絡抓包內容如下圖所示:

接口和參數:

http://www.kuaidi100.com/query?type=huitongkuaidi&postid=350757819118

 

響應參數如下:

{"message":"ok","nu":"350757819118","ischeck":"1","condition":"F00","com":"huitongkuaidi","status":"200","state":"3","data":[{"time":"2017-12-21 15:42:29","ftime":"2017-12-21 15:42:29","context":"廣州市|廣州市【廣州新永和站】,周祥代 已簽收","location":""},{"time":"2017-12-21 14:28:59","ftime":"2017-12-21 14:28:59","context":"廣州市|廣州市【廣州新永和站】,【周海祥/18925068779】正在派件","location":""},{"time":"2017-12-21 14:27:59","ftime":"2017-12-21 14:27:59","context":"廣州市|到廣州市【廣州新永和站】","location":""},{"time":"2017-12-20 23:43:30","ftime":"2017-12-20 23:43:30","context":"廣州市|廣州市【廣州黃埔轉運中心】,正發往【廣州新永和站】","location":""},{"time":"2017-12-20 20:40:15","ftime":"2017-12-20 20:40:15","context":"廣州市|到廣州市【廣州黃埔轉運中心】","location":""},{"time":"2017-12-20 16:18:35","ftime":"2017-12-20 16:18:35","context":"廣州市|廣州市【廣州轉運中心】,正發往【廣州黃埔轉運中心】","location":""},{"time":"2017-12-20 08:27:05","ftime":"2017-12-20 08:27:05","context":"廣州市|到廣州市【廣州轉運中心】","location":""},{"time":"2017-12-19 03:21:02","ftime":"2017-12-19 03:21:02","context":"西安市|西安市【西安轉運中心】,正發往【廣州轉運中心】","location":""},{"time":"2017-12-18 22:52:37","ftime":"2017-12-18 22:52:37","context":"西安市|到西安市【西安轉運中心】","location":""},{"time":"2017-12-18 22:43:29","ftime":"2017-12-18 22:43:29","context":"西安市|到西安市【西安南郊二站集貨點】","location":""},{"time":"2017-12-17 21:29:25","ftime":"2017-12-17 21:29:25","context":"西安市|西安市【西安西郊五站】,【趙永剛/02962255063】已攬收","location":""}]}

 

 

然后右鍵導出,選擇har格式。

 

 

 

將har文件進行轉換,cmd命令:

 >>>  har2case kauidi.har  kuaidi.json

這樣就可以把har格式的轉換為json格式的用例

分割線---------------------------------------------------------------------------------------------------

接下來重點是講用例,也就是json的組成部分。

生成的.json文件內容如下:

[
  {
    "config": {
      "name": "testset description",
      "variables": [],
      "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 

Safari/537.36"
      }
    }
  },
  {
    "test": {
      "name": "/query",
      "request": {
        "params": {
          "type": "huitongkuaidi",
          "postid": "350757819118"
        },
        "url": "http://www.kuaidi100.com/query",
        "method": "GET"
      },
      "validate": [
        {
          "eq": [
            "status_code",
            200
          ]
        },
        {
          "eq": [
            "headers.Content-Type",
            "text/html;charset=UTF-8"
          ]
        },
	{
          ]
        }
      ]
    }
  }
]

測試用例的格式如下:

config作為整個測試用例集的全局配置項

test:對應單個測試用例。

 

我從以下4個方面介紹Httprunner的優勢:

第一,斷言。

斷言參數存放在上述代碼的這個部分,因為這是自動生成的,因此我們需要根據參數的返回值自己加進去一些數據。

根據響應參數,我們加進去返回結果

執行一下,發現通過

修改斷言為其他,則執行失敗。

斷言可靠,易於維護。

第二,緩存參數。

我們想獲取,第一個參數的postid緩存,通過下面的方法:

 

 當需要引用的時候,直接使用

這樣就在test2中使用了,test1中的緩存參數。

 執行兩條用例都成功:

 

第三個:數據驅動

同樣,以快遞號,postid為例,假設我們要測試,從350757819118~~350757819200區間的所有快遞號碼。我們只需要講數據寫入csv文件,並創建參數和.csv文件的關聯。

例如:

執行用例:

總共執行了22條,通過一條用例(是因為預期結果的原因,同理我們也可以將所有預期結果放入csv文件,進行關聯。從而減少代碼量)。設置的數據均被執行。

 

 最后就是測試報告:

每次執行的測試報告以html的格式保存,

內容如下:

 

包括詳細錯誤日志:

 

 

 

 總結:
因為后台做了大量工作,因此我們只需要維護少量的json數據,工作量減少,效率提高。

靈活性:可根據自己需要,定義合適的方法或者數據緩存機制。

httprunner也提供了基於locust的性能測試,可根據需要直接運行json文件即可!

同時,最重要的是,測試用例和代碼的分離。這樣使得稍有編碼功底的人迅速上手。

接口用例可通過har文件錄制轉換得到,也可自己定義。

 

 

 

順便提一下

如果有任何問題,你可以在這里找到我 ,軟件測試交流qq群,209092584


免責聲明!

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



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