HttpRunner安装以及验证

HttpRunner3.x:一款强大的HTTP自动化测试框架
HttpRunner3.x是一个基于Python的HTTP自动化测试框架,它结合了Requests库和YAML/JSON格式,支持接口测试、性能测试、监控和持续集成等多种测试需求。该框架采用CLI调用,易于集成到Jenkins等CI工具中,提供测试用例分层、完善的校验机制和HAR录制功能,并可扩展至 Locust 分布式性能测试。

介绍

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

此文档适用于全新发布的 HttpRunner 3.x 版本

设计理念

  • 充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车
  • 遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践
  • 追求投入产出比,一份投入即可实现多种测试需求

核心特性

  • 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
  • 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
  • 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
  • 支持完善的测试用例分层机制,充分实现测试用例的复用
  • 测试前后支持完善的 hook 机制
  • 响应结果支持丰富的校验机制
  • 基于 HAR 实现接口录制和用例生成功能(har2case
  • 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
  • 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
  • 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
  • 极强的可扩展性,轻松实现二次开发和 Web 平台化

上述描述链接请点击

安装说明

pip install httprunner
pip install har2case

验证安装

hrun -V
# 显示版本号如下图
# 3.1.4

har2case -V
# 显示版本号如下图
# 0.3.1

在 HttpRunner 安装成功后,系统中会新增如下 5 个命令:

  • httprunner: 主命令
  • hmake:  httprunner make的别名,将yaml/json转化成pytest文件
  • hrun: httprunner 的缩写,功能与 httprunner 完全相同
  • locusts: 基于 Locust 实现性能测试
  • har2case: httprunner 韩安冉case的别名,辅助工具,可将标准通用的 HAR 格式(HTTP Archive)转换为YAML/JSON格式的测试用例。
### HttpRunner 的返回值验证方法 HttpRunner 是一种用于 API 测试的工具,其核心功能之一是对 HTTP 请求的返回值进行校验。通过 `validate` 字段,可以定义一系列断言规则来验证服务器响应的内容是否符合预期。 #### 验证方式概述 HttpRunner 支持多种验证机制,其中最常用的是基于 JSON 数据结构的键值匹配以及正则表达式的字符串匹配。具体来说,可以通过以下两种方式进行返回值验证: 1. **JMESPath 表达式** JMESPath 是一种查询语言,专门设计用来从嵌套的 JSON 结构中提取数据。在 HttpRunner 中,可以直接利用 JMESPath 来定位并提取目标字段,并将其作为验证的一部分[^1]。 2. **基本比较运算符** 对于简单的场景,比如判断某个字段是否存在或者等于特定值,可以使用常见的逻辑操作符(如 `==`, `!=`, `<`, `>` 等)完成验证[^3]。 --- #### 使用示例 以下是几个典型的例子展示如何配置 `validate` 参数来进行返回值验证: ##### 示例 1:简单相等性检查 假设我们希望确认接口 `/api/user/info` 返回的用户名为 `"JohnDoe"`,那么可以在测试用例中这样写: ```yaml teststeps: - name: check user info response request: method: GET url: /api/user/info validate: - eq: ["body.username", "JohnDoe"] # 判断 body.username 是否等于 JohnDoe ``` 此处 `eq` 表示 “equal to”,即相等关系。 --- ##### 示例 2:复杂对象路径访问 如果需要更深入地挖掘 JSON 响应中的子节点,可借助 JMESPath 实现灵活的选择策略。例如,要验证订单列表的第一个项目状态码是否为成功 (`status=success`) ,可以用如下代码片段表示: ```yaml teststeps: - name: verify first order status is success request: method: POST url: /api/orders/list json: page_size: 10 current_page: 1 extract: orders_list: 'body.orders' # 提取整个数组供后续处理 validate: - eq: ['${jmespath(orders_list[0], "status")}', 'success'] ``` 这里 `${jmespath(...)}` 函数允许动态解析复杂的 JSON 路径。 --- ##### 示例 3:数值范围检验 除了单纯的布尔判定外,有时还需要评估某些指标是否落在合理区间内。下面的例子展示了怎样确保延迟时间不超过一秒 (单位毫秒) : ```yaml teststeps: - name: ensure server latency within acceptable range variables: max_allowed_latency_ms: 1000 request: method: HEAD url: / extract: elapsed_time_ms: 'response.elapsed.total_seconds * 1000' validate: - lt: ['elapsed_time_ms', '{{max_allowed_latency_ms}}'] # less than comparison ``` 上述脚本引入了一个自定义变量 `{{max_allowed_latency_ms}}` 并执行小于号 (<) 检查以保障性能达标[^4]。 --- ### 已知局限性和改进建议 尽管 HttpRunner 功能强大,但在实际应用过程中也暴露出一些不足之处,主要包括但不限于以下几个方面: - 封装过度可能导致扩展困难; - 当前版本可能存在尚未解决的小缺陷; - 如果涉及数据库或其他外部系统的联动调试,则需额外开发辅助模块才能实现无缝衔接。 因此建议开发者们根据项目的具体情况权衡利弊后再决定是否选用该框架。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天的菠菜

一毛两毛也是动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值