HttpRunner-03:生成測試用例
阿新 • • 發佈:2021-11-30
1.前言
在編寫測試用例之前,我們應該瞭解API的詳細資訊,使用一些抓包工具,比如:Charles Proxy、Fiddler、Chrome DevTools
等捕獲網路會話流量。
例如,以postman-echo.com提供的API為例說明,我們利用網路抓包工具,捕獲HTTP請求,匯出HAR格式檔案,使用har2case
生成pytest、JSON、YAML
格式的測試用例,我簡單畫了流程圖來理解生成測試用例此過程。
2.捕獲HTTP請求和響應
本例中,我以谷歌瀏覽器的DevTools作為抓包工具,Chrome的DevTools可以捕獲所有流量並將其儲存到HAR檔案中。
谷歌瀏覽器發起請求:https://postman-echo.com/get?foo1=bar1&foo2=bar2
按下 F12
或 右鍵檢查
,出現一個DevTools面板(如果你找不到任何請求連結,通過ctrl+R
快捷鍵重新請求一遍URL即可)
3.匯出HAR檔案har目錄
從前面的操作步驟,我們拿到har檔案,並匯出到本地,我把har檔案匯出到demo專案下的har目錄
,名為postman-echo.com.har
4.生成測試用例(pytest)
由於 HttpRunner 3.0.7,har2case預設情況下會將 HAR 檔案轉換為 pytest,並且非常建議以 pytest
格式而不是以前的YAML/JSON格式編寫和維護測試用例。
執行har2case har/postman-echo.com.har
- 檢視生成的測試用例
postman_echo_com_test.py
檔案
# NOTE: Generated By HttpRunner v3.1.6 # FROM: har/postman-echo.com.har from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase class TestCasePostmanEchoCom(HttpRunner): config = Config("testcase description").verify(False) teststeps = [ Step( RunRequest("/get") .get("https://postman-echo.com/get") .with_params(**{"foo1": "bar1", "foo2": "bar2"}) .with_headers( **{ "pragma": "no-cache", "cache-control": "no-cache", "sec-ch-ua": '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "dnt": "1", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "sec-fetch-site": "none", "sec-fetch-mode": "navigate", "sec-fetch-user": "?1", "sec-fetch-dest": "document", "accept-encoding": "gzip, deflate, br", "accept-language": "zh-CN,zh;q=0.9,en;q=0.8", } ) .with_cookies( **{ "sails.sid": "s%3AEFVfR_Ur7l24-eh6qebBWjlkxIgh0PNS.Yb0onNxWZuRdZ%2BNs%2BzfkO%2BgKA08zxh2Lary5oaRlZbE" } ) .validate() .assert_equal("status_code", 200) .assert_equal( "body.url", "https://postman-echo.com/get?foo1=bar1&foo2=bar2" ) ), ] if __name__ == "__main__": TestCasePostmanEchoCom().test_start()
5.生成測試用例(JSON)
執行har2case -2j har/postman-echo.com.har
,生成JSON格式的測試用例
6.生成測試用例(YAML)
執行har2case -2y har/postman-echo.com.har
,生成YAML格式測試用例