httprunner(4)錄製生成測試用例
阿新 • • 發佈:2021-02-05
# 前言
寫用例之前,我們應該熟悉API的詳細資訊。建議使用抓包工具Charles或AnyProxy進行抓包。
# har2case
我們先來了解一下另一個專案har2case
他的工作原理就是將當前主流的抓包工具和瀏覽器都支援將抓取得到的資料包匯出為標準通用的 HAR 格式(HTTP Archive),然後 HttpRunner 將 HAR 格式的資料包轉換為YAML/JSON格式的測試用例檔案。
這裡使用charles抓取百度首頁進行演示
選中百度請求,右鍵點選Export Session,匯出到`/hrun_demo/har`下,命名為baidu,格式選擇`HTTP Archive(.har)`,點選save
![](https://img2020.cnblogs.com/blog/1868812/202102/1868812-20210205132955250-2106860164.jpg)
![](https://img2020.cnblogs.com/blog/1868812/202102/1868812-20210205151318615-1347379833.jpg)
此時,har資料夾下會多出`baidu.har`檔案
# har2case生成用例
可以使用命令har2case將Har檔案轉成測試用例,先使用命令`har2case -h`檢視幫助文件
```
(httprunner_env) ➜ har har2case -h
usage: har2case har2case [-h] [-2y] [-2j] [--filter FILTER]
[--exclude EXCLUDE]
[har_source_file]
positional arguments:
har_source_file Specify HAR source file
optional arguments:
-h, --help show this help message and exit
-2y, --to-yml, --to-yaml
Convert to YAML format, if not specified, convert to
pytest format by default.
-2j, --to-json Convert to JSON format, if not specified, convert to
pytest format by default.
--filter FILTER Specify filter keyword, only url include filter string
will be converted.
--exclude EXCLUDE Specify exclude keyword, url that includes exclude
string will be ignored, multiple keywords can be
joined with '|'
```
- -2y:轉換為`yaml`格式,如果沒有指定,預設轉換為`pytest`格式
- -2j:轉換為`json`格式,如果沒有指定,預設轉換為`pytest`格式
- --filter:指定篩選關鍵字,僅url包含篩選字串將被轉換。
- --exclude:指定exclude關鍵字,包括exclude的url字串將被忽略,可以選擇多個關鍵字以“|”聯接
# 生成pytest格式的用例
HttpRunner 3.0.7版本開始,har2case將HAR檔案預設轉換成pytest,`強烈建議`以`pytest格式`而不是以前的YAML / JSON格式編寫和維護測試用例。
這裡也是博主從pytest框架轉換為httprunner框架的原因之一
執行命令將har檔案轉換成測試用例:
```
(httprunner_env) ➜ har har2case baidu.har
2021-02-05 11:27:32.945 | INFO | httprunner.ext.har2case.core:gen_testcase:356 - Start to generate testcase from /Users/jkc/hrun/hrun_demo/har/baidu.har
2021-02-05 11:27:32.945 | INFO | httprunner.ext.har2case.core:_make_testcase:347 - Extract info from HAR file and prepare for testcase.
2021-02-05 11:27:32.948 | INFO | httprunner.compat:ensure_testcase_v3:219 - ensure compatibility with testcase format v2
2021-02-05 11:27:32.948 | INFO | httprunner.loader:load_dot_env_file:127 - Loading environment variables from /Users/jkc/hrun/hrun_demo/.env
2021-02-05 11:27:32.949 | DEBUG | httprunner.utils:set_os_environ:33 - Set OS environment variable: USERNAME
2021-02-05 11:27:32.949 | DEBUG | httprunner.utils:set_os_environ:33 - Set OS environment variable: PASSWORD
2021-02-05 11:27:32.950 | INFO | httprunner.make:make_testcase:349 - start to make testcase: /Users/jkc/hrun/hrun_demo/har/baidu.har
2021-02-05 11:27:32.951 | INFO | httprunner.make:make_testcase:442 - generated testcase: /Users/jkc/hrun/hrun_demo/har/baidu_test.py
2021-02-05 11:27:32.952 | INFO | httprunner.make:format_pytest_with_black:170 - format pytest cases with black ...
reformatted /Users/songyingkai/hrun/hrun_demo/har/baidu_test.py
All done! ✨