一、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格式的用例