HttpRunner V3.x學習筆記系列 (三) -- har2case生成測試用例


一、Fiddler抓包生成.har文件

httprunner的錄制生成用例功能依托於另一個獨立的項目-har2case

原理就是當前主流的抓包工具和瀏覽器都支持將抓取得到的數據包導出為標准通用的 HAR 格式(HTTP Archive),然后 HttpRunner 將 HAR 格式的數據包轉換為YAML/JSON格式的測試用例文件。

使用fiddler去抓取一個百度首頁的請求。

 

 選中這個請求,點擊左上角的File——Export Sessions——(可以選擇導出選中的也可以導出所有),這里我們選擇導出選中的,勾選 HTTPArchive v1.2,導出HTTPArchive,文件名baidu_home.har,保存到了項目(httprunner3_demo)的har目錄下。

 

 

 

運行har2case命令可將har文件轉換成pytest/yaml/json文件格式的測試用例

二、轉換為pytest文件

在3.0中,由於httpRunner默認會將HAR文件轉成pytest,建議使用pytest,而不是之前的yaml、json格式

運行命令將har文件轉換成測試用例:

har2case baidu_home.har

 生成的pytest文件是如下標准的pytest文件,它可以直接運行:

 1 # NOTE: Generated By HttpRunner v3.1.4
 2 # FROM: har\baidu_home.har
 3 
 4 
 5 from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
 6 
 7 
 8 class TestCaseBaiduHome(HttpRunner):
 9 
10     config = Config("testcase description").verify(False)
11 
12     teststeps = [
13         Step(
14             RunRequest("/")
15             .get("https://www.baidu.com/")
16             .with_headers(
17                 **{
18                     "Host": "www.baidu.com",
19                     "Connection": "keep-alive",
20                     "Cache-Control": "max-age=0",
21                     "Upgrade-Insecure-Requests": "1",
22                     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36",
23                     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
24                     "Sec-Fetch-Site": "none",
25                     "Sec-Fetch-Mode": "navigate",
26                     "Sec-Fetch-User": "?1",
27                     "Sec-Fetch-Dest": "document",
28                     "Accept-Encoding": "gzip, deflate, br",
29                     "Accept-Language": "zh-CN,zh;q=0.9",
30                     "Cookie": "PSTM=1583157243; BIDUPSID=3B51244302DB0BF9B76896DE4EC2F529; BAIDUID=9069C0AF87384BFC4B96EBD334B38414:SL=0:NR=10:FG=1; sug=3; ORIGIN=0; bdime=0; BD_UPN=12314753; BDUSS=JwNWRtR200WndSNXB0YjBETEM1OGVrUUhvcGVjVWVzN29vOXRCczdVdlU1Q1JmSVFBQUFBJCQAAAAAAAAAAAEAAABUuQnqxL7EvuPl4-VmcmVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRX~V7UV~1eZX; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDUSS_BFESS=JwNWRtR200WndSNXB0YjBETEM1OGVrUUhvcGVjVWVzN29vOXRCczdVdlU1Q1JmSVFBQUFBJCQAAAAAAAAAAAEAAABUuQnqxL7EvuPl4-VmcmVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRX~V7UV~1eZX; COOKIE_SESSION=16987_0_6_6_11_4_0_1_6_2_0_0_17058_0_97_0_1596701173_0_1596701076%7C9%2387082_18_1596675461%7C9; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=6; H_PS_PSSID=32293_1468_31671_32358_32327_32045_32398_32407_32115_26350; sugstore=1",
31                 }
32             )
33             .with_cookies(
34                 **{
35                     "PSTM": "1583157243",
36                     "BIDUPSID": "3B51244302DB0BF9B76896DE4EC2F529",
37                     "BAIDUID": "9069C0AF87384BFC4B96EBD334B38414:SL=0:NR=10:FG=1",
38                     "sug": "3",
39                     "ORIGIN": "0",
40                     "bdime": "0",
41                     "BD_UPN": "12314753",
42                     "BDUSS": "JwNWRtR200WndSNXB0YjBETEM1OGVrUUhvcGVjVWVzN29vOXRCczdVdlU1Q1JmSVFBQUFBJCQAAAAAAAAAAAEAAABUuQnqxL7EvuPl4-VmcmVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRX~V7UV~1eZX",
43                     "BDORZ": "B490B5EBF6F3CD402E515D22BCDA1598",
44                     "BDUSS_BFESS": "JwNWRtR200WndSNXB0YjBETEM1OGVrUUhvcGVjVWVzN29vOXRCczdVdlU1Q1JmSVFBQUFBJCQAAAAAAAAAAAEAAABUuQnqxL7EvuPl4-VmcmVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRX~V7UV~1eZX",
45                     "COOKIE_SESSION": "16987_0_6_6_11_4_0_1_6_2_0_0_17058_0_97_0_1596701173_0_1596701076%7C9%2387082_18_1596675461%7C9",
46                     "BD_HOME": "1",
47                     "delPer": "0",
48                     "BD_CK_SAM": "1",
49                     "PSINO": "6",
50                     "H_PS_PSSID": "32293_1468_31671_32358_32327_32045_32398_32407_32115_26350",
51                     "sugstore": "1",
52                 }
53             )
54             .validate()
55             .assert_equal("status_code", 200)
56             .assert_equal('headers."Content-Type"', "text/html;charset=utf-8")
57         ),
58     ]
59 
60 
61 if __name__ == "__main__":
62     TestCaseBaiduHome().test_start()

因為httprunner封裝了pytest,所有既可以用hrun去運行,也可以用pytest去運行

1.使用hrun運行代碼:

hrun baidu_home_test.py

 

 2.使用pytest運行代碼:

pytest baidu_home_test.py

 

三、轉換為json或yaml文件測試用例

轉換為json格式

har2case baidu_home.har -2j

轉換為yaml格式

har2case baidu_home.har -2y

 

四、測試用例的組織形式:

在httpRunner中,測試用例的組織形式一共有三種:分別是json,yaml和pytest

如何生成這些json、yaml、pytest文件?

第一步:

抓包

第二步:

把請求包保存為har格式

第三步:

使用命令har2case生成

默認生成pytest格式的用例

可以使用 -2y 來將 har文件生成yaml格式的用例

可以使用 -2j 來將 har文件生成json格式的用例


免責聲明!

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



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