環境mac 10.12
簡介:
HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON
腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
HttpRunner是一個基於Python開發的測試框架,可以運行在Mac、Linux、Windows系統平台上
HttpRunner安裝 安裝的是HttpRunner2.7
1.創建工程目錄:
在python工作目錄下創建一個項目模板
cmd 進入到Python工作目錄-->輸入以下命令:
hrun --startproject 項目名稱 # 2.X版本
httprunner startproject 項目名稱 # 3.X版本
我Python的測試工作目錄是: documents/automatedTesting/pythonHttpRunner/testHttpRunner
---------------------------------------
如果報錯:
maydeMacBook-Pro:testHttprunner may$ hrun --startproject mayhrun 2020-07-18 16:04:26.717 | ERROR | httprunner.cli:main_run:44 - No valid testcase path in cli arguments: ['--startproject', 'mayhrun'] Sentry is attempting to send 0 pending error messages Waiting up to 2 seconds Press Ctrl-C to quit
是因為框架升級導致的,只需要刪除符號“--”即可,且使用
httprunner
httprunner startproject mayhttprunner
---------------------------------------------
然后會生成一個myhrun的文件夾,且myhrun的文件夾下看到生成的4個目錄和一個py文件
(生成的模式是采用:測試用例分層機制。對於接口數比較多,或者測試場景比較復雜的項目,為了使測試用例更便於組織和維護,推薦使用測試用例分層機制,即單獨維護 API 描述、測試用例和測試場景)
2.目錄介紹
testcases:存放用例
testsuites:存放套件
reports:自動生成報告並放到該目錄
- 測試用例集(testsuite):對應一個文件夾,包含單個或多個測試用例(YAML/JSON)文件
- 測試用例(testcase):對應一個 YAML/JSON 文件,包含單個或多個測試步驟
- 測試步驟(teststep):對應 YAML/JSON 文件中的一個test,描述單次接口測試的全部內容,包括發起接口請求、解析響應結果、校驗結果等
對於單個 YAML/JSON 文件來說,數據存儲結構為 list of dict 的形式,其中可能包含一個全局配置項(config)和若干個測試步驟(test)
- config:作為整個測試用例的全局配置項
- test:對應單個測試步驟(teststep),測試用例存在順序關系,運行時將從前往后依次運行各個測試步驟
demo_testcase.yml
config: name: testcase description variables: {} teststeps: - name: /login request: headers: Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 method: GET url: https://mp.zhinengshouyin.com/login validate: - eq: - status_code - 200 - eq: - headers.Content-Type - text/html; charset=UTF-8
demo_testsuite.yml
config: name: "demo testsuite" variables: device_sn: "XYZ" base_url: "http://127.0.0.1:5000" testcases: - name: call demo_testcase with data 1 testcase: path/to/demo_testcase.yml variables: device_sn: $device_sn - name: call demo_testcase with data 2 testcase: path/to/demo_testcase.yml variables: device_sn: $device_sn
3.在Pycharm中打開新建的myhrun項目
3-1.各文件說明
說明:
(1)api 文件夾:存儲接口定義描述
(2)testcases 文件夾:存儲測試用例,文件夾也可以使用其它名稱
(3)testsuites 文件夾:測試測試場景,文件夾也可以使用其它名稱
(4)reports 文件夾:存儲 HTML 測試報告
(5).env文件:存儲項目環境變量,通常用於存儲項目敏感信息
(6)debugtalk.py:存儲項目中邏輯運算輔助函數(該文件所在目錄將作為項目工程的根目錄,api 文件夾都必須與其放置在相同目錄)
·該文件存在時,將作為項目根目錄定位標記,其所在目錄即被視為項目工程根目錄
·該文件不存在時,運行測試的所在路徑(CWD)將被視為項目工程根目錄
·測試例文件中的相對路徑(例如.csv)均需基於項目工程根目錄
·運行測試后,測試報告文件夾(reports)會生成在項目工程根目錄
若要新建一個.yml或.json文件
在testcases文件夾下新建一個.yml或.json文件(一般默認有個demo的yml例子),並按照格式寫入接口的相關信息
若要自己建個.yml或.json文件,testcases文件夾右擊-->NEW-->File,命名的名字以.yml或.json文件結尾,然后enter.
創建完成結果如下:
3-2. 使用har2case 將接口導出的har文件轉換成json或者yam文件
charles導出接口數據 (由鏈接可知命名的名稱為 mplogin.har)
在myhrun項目下新建datas文件,並且將mplogin.har復制到datas目錄下
終端進入項目myhrun
終端輸入以下指令:
har2case datas/mplogin.har # 默認轉換成json格式的文件
har2case datas/mplogin.har -2y #加上參數 -2y轉換為yam格式
har2case 后面的是har的文件路徑
如圖 生成yam文件:
3-3.生成測試報告
1)將生成的yam文件拷貝到testcases目錄下
如圖
2) 運行並導出測試報告
執行:hrun testcases/mplogin.yml --log-level debug 或者 hrun testcases/mplogin.yml
hrun testcases/mplogin.yml --log-level debug
如圖:
若報錯:
ERROR: test_0000_000 (httprunner.api.TestSequense)
Traceback (most recent call last):
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)
可查看 httprunner報錯匯總(一)https 請求證書驗證
然后在reports文件夾下會自動生成一個html文件
3)優化測試報告,生成漂亮的測試報告
查看httprunner自帶的模版,發現2.7版本只有一個模版,也就是默認的模版。
找到報告模版的路徑(不同環境的路徑有點差別):/usr/local/lib/python3.7/site-packages/httprunner/report/html/template.html
四.使用locust進行頁面的性能測試:
1)、安裝locust第三方庫:pip3 install locustio
2)、使用 locusts -f 啟動腳本文件
執行命令: locusts -f testcases/mplogin0315.yml
這一步一直報錯 (有資料顯示Loust不支持python3.7的。一直擱置)
from locust.events import request_failure
ModuleNotFoundError: No module named 'locust.events'
在pycharm查看該模塊
3)、在瀏覽器中進行訪問:http://localhost:8089/