HTTPRunne
HTTPRunner是一种单元测试工具,由于教学的需求,我学习了它,但是我觉得它比Python的Requests类相差太远。作为一个比较流行的工具在这里进行介绍。
1,原理
HttpRunner 是一款开源的 API 测试工具,兼容 HTTP(S)、HTTP2、WebSocket、RPC 等多种网络协议,支持接口测试、性能测试、数字体验监测等多种测试类型。它操作简便,功能全面,拥有丰富的插件系统和卓越的扩展性。
功能特点:
-
全面支持网络协议:不仅完整支持 HTTP(S)/1.1 和 HTTP/2,还能灵活扩展至 WebSocket、TCP、RPC 等多种协议。
-
多样化的测试用例格式:支持 YAML、JSON、go test、pytest 等多种格式,且可轻松实现格式之间的转换。
-
双重执行引擎:集成了 golang 和 python 两种执行引擎,既保证了go 的高效性能,也享受了 pytest 丰富的生态系统。
-
便捷的用例生成方式:支持通过 HAR、Postman、Swagger、curl 等工具生成测试用例,同时提供基于链式调用的编写方法,简化测试用例的编写过程。
-
应对复杂测试场景:借助 variables、extract、validate、hooks 等机制,轻松构建复杂的测试场景。
-
插件化扩展:内置了丰富的函数库,并支持使用 go、python、java 等主流编程语言编写自定义函数,轻松扩展更多功能。
-
高效的性能测试:无需额外设置即可进行压力测试,单机轻松支持超过1万 VUM,配合分布式负载能力,可实现大规模压力测试。
-
网络性能监测:在进行场景化接口测试的同时,还能额外监测网络链路的性能指标,如 DNS 解析、TCP 连接、SSL 握手、网络传输等。
-
一键快速部署:通过二进制命令行工具分发,无需依赖特定环境,一条命令即可在 macOS、Linux、Windows 上迅速完成安装部署。
官方网址:https://httprunner.com/
2,安装
1)使用pip安装
pip install httprunner
2)安装hrp命令
GitHub上下载安装包:https://github.com/httprunner/httprunner/releases
选择合适的安装包
3)下载完成后,进行解压,加入全局变量中
3 使用
1)在工作目录中,终端执行命令,创建ebusiness项目
hrp startproject ebusiness
目录结构:
-
har 录制的文件目录
-
results 报告目录
-
testcases 测试用例目录
-
.env 环境配置文件
-
.gitignore 传git仓库时忽略文件
-
debugtalk.py 辅助函数功能文件
-
proj.json 记录创建项目的信息
2)修改.env 环境配置文件
base_url=http://192.168.31.57:8000/
base_url为测试所需要的根目录
3)在testcases目录中建立测试用例test_ebusiness.yml。(在testcases目录下有多个示例用例,您可以删除)
1 #表示下面为配置段 2 config: 3 #测试主标题 4 name: 测试电子商务模块 5 #定义全局变量 6 variables: 7 #基础的URL 8 base_url: "http://127.0.0.1:8000" 9 10 #表示下面为测试用例段 11 teststeps: 12 - 13 #定义此用例名称 14 name: 登录首页 15 #请求参数 16 request: 17 #请求方法 18 method: GET 19 #URL地址 20 url: $base_url 21 #提取响应的数据并存储到变量中 22 extract: 23 #获取名为csrftoken的cookier参数 24 - csrftoken: cookies.csrftoken 25 validate: 26 #验证返回码是200 27 - eq: ["status_code", 200] 28 - 29 #定义此用例名称 30 name: 登录验证 31 #定义变量 32 variables: 33 #定义用户名 34 username: "cindy" 35 #定义密码,密码经过SHA256散列 36 password: "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92" 37 #请求参数 38 request: 39 #请求方法 40 method: POST 41 #URL地址 42 url: $base_url/login_action/ 43 #定义cookies参数 44 with_cookies: 45 csrftoken: $csrftoken 46 #定义头 47 headers: 48 X-CSRFToken: "$csrftoken" 49 #定义请求参数 50 data: 51 username: $ username 52 password: $ password 53 csrfmiddlewaretoken: "$csrftoken" 54 validate: 55 validate: 56 #验证返回码是200 57 - eq: ["status_code", 200] 58 - eq: [url, $base_url/goods_view/] 59 - eq: [encoding, utf-8] 60 - eq: [reason, OK]
HttpRunner 的测试用例由两个核心部分构成:
配置(config):这是测试用例的共享配置环节,涵盖了诸如用例名称、基础 URL、参数化数据源以及是否启用 SSL 验证等设置。
测试步骤(teststeps):这部分是一系列有序的操作步骤,其设计理念借鉴了 go interface,能够灵活支持各种协议和测试类型的扩展,甚至包括用户界面(UI)自动化测试。每个 step 都是一个 HTTP 请求,描述信息仅包含了 HTTP 请求和结果校验的核心要素。
变量的定义在step或config的variables中。
运行成功,产生pytest格式的python文件。
1 # NOTE: Generated By HttpRunner v4.3.5 2 # FROM: .\testcases\test_ebusiness.yml 3 from httprunner import HttpRunner, Config, Step, RunRequest 4 class TestCaseTestEbusiness(HttpRunner): 5 config = Config("测试电子商务模块").variables(**{"base_url": "http://127.0.0.1:8000"}) 6 teststeps = [ 7 Step( 8 RunRequest("登录首页") 9 .get("$base_url") 10 .extract() 11 .with_jmespath("cookies.csrftoken", "csrftoken") 12 .validate() 13 .assert_equal("status_code", 200) 14 ), 15 Step( 16 RunRequest("登录成功,进入商品页面") 17 .with_variables( 18 **{ 19 "username": "cindy", 20 "password": "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", 21 } 22 ) 23 .post("$base_url/login_action/") 24 .with_headers(**{"X-CSRFToken": "$csrftoken"}) 25 .with_data( 26 { 27 "username": "$username", 28 "password": "$password", 29 "csrfmiddlewaretoken": "$csrftoken", 30 } 31 ) 32 .validate() 33 .assert_equal("status_code", 200) 34 .assert_equal("url", "$base_url/goods_view/") 35 .assert_equal("encoding", "utf-8") 36 .assert_equal("reason", "OK") 37 ), 38 ] 39 if __name__ == "__main__": 40 TestCaseTestEbusiness().test_start()
可以通过pytest来运行这个测试用例
另:网上说可以通过
hrp run testcases/test_demo.yml --gen-html-report
运行,并且产生测试报告
hrp boom testcases/test_demo.yml --spawn-count 10 --spawn-rate 2
运行性能测试
我没有实现,据说要连接到google上
Httprunner测试用例可以用yam来写,也可以用json来写。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示