前言:DebugTalk(李隆)开源的
httprunner
因其优秀的设计理念、良好的测试设计的高度抽象以及 DebugTalk 热爱技术、开源、分享,让httprunner
深受大家欢迎,在很多公司已经落地。
入职LX
公司,公司内部已有一套基于 Python 版httprunner
开发的接口测试平台,因今年测开技术统一使用 JAVA 语言开发且平台往All in one
的节奏,所以就顺手写了一个 JAVA 版的httprunner
,简称成:hrun4j
。个人在接口测试领域有一定探索,在设计hrun4j
加入了自己很多独到的见解同时结合 JAVA 语言特性进行开发设计,因想更多的同学能参与到开源共建,所以把TesterHome
作为开源首发宣传地,希望能有更多能参与到项目开发中。
hrun4j
是由乐马技术
推出的开源一站式接口测试解决方案,它不仅仅只是一个 Java 版的 httprunner,现阶段规划解决方案包括四部分:
hrun4j-core
:框架核心,提供完整的运行机制、数据驱动、多种表达式引擎、多种数据检查机制及测试报告生成(已完成)hrun4j-plugin
:Intellij Idea 插件,赋能研发,插件式集成至 IDEA,提供智能补全、快速填充及在线调试运行功能(实现中)hrun4j-platform
: 官方 Web 平台,赋能测试,提供完整的 API 测试生命周期管理(规划中)hrun4j-sync
: 同步中心,增强研发测试协作,采用双向同步机制,支持研发本地接口文档、用例上传或远程用例下载自测(规划中)CLI
和POM
模式集成hrun4j
能力,如以POM
模式集成,可以无缝融入 Spring 生态链Okhttps
,即使是复杂场景(比如上传/下载进度控制),它都能轻松搞定TestNG
实现 YML 或 JSON 格式数据驱动、测试用例组织与执行ReportNG
,生成优雅详细的测试报告正则表达式/Jsonpath/Jmespath/对象提取
,支持丰富的校验方式,比如:startsWith/endsWith/equalTo/not/containsString
等Aviator
和BeanShell
脚本,借助他们即可轻松实现复杂的动态业务逻辑hook
机制瑞士小军刀
,目前支持har2yml|json
、viewhar
、run
、startproject CLI/POM
、swagger2api
、postman2case
I18N
参数即可轻松切换中英文输出工程模块划分如下:
├── hrun4j-api: 提供api接口方便扩展成平台(纳入平台规划)
├── hrun4j-cli: 提供命令行支持,支持用例录制,可快速创建脚手架、测试用例集运行及调试(已完成)
├── hrun4j-core: 工程核心模块,提供完整的运行机制、数据驱动、表达式引擎及测试报告生成(已完成)
├── hrun4j-plugins: 插件式集成至IDEA,提供智能补全、快速填充及在线调试运行功能(开发中)
├── hrun4j-test-demo: 常用基本、核心、特殊案例使用说明(已完成)
├── hrun4j-test-server:内置测试服务,基于springboot开发,工程规范标准(已完成)
提供多种方式集成hrun4j
能力,分别是CLI
、POM
、API
,其中API
可细分为:Idea Plugin
、Platform
,一期主要集中在CLI
、POM
。
CLI
,借助轻量级文本编辑器(Sublime、Editplus)和命令行工具 hrun4j.jar 即可完成用例编写、编排、执行及报告生成。POM
,在 IDEA 下完成用例编写、编排、执行及报告生成,POM 模式本质是以 MAVEN JAR 引入hrun4j
,从而集成其能力。hrun4j
提供多种响应数据提取方式,支持正则表达式/Jsonpath/Jmespath/对象提取
Jsonpath
:可以通过$.对象.属性
获取,对象即为框架内置对象正则表达式
:通过正则获取,值必须以^
开头并以$
结尾对象提取
:通过框架提供的内置对象获取,对象
或者对象.属性
方式获取Jmespath
:和方式三类似,但可以支持更复杂的表达式提取,属Jmespath
专有表达式hrun4j
是通过反射机制构造org.hamcrest.Matchers
对象进行断言代码生成的,因此Matchers
类型所有方法均可以使用,现只支持预期和实际参数断言,方法非常多,列罗常用方法如下:
equalTo
:比较两个对象相同,可缩写成eq
startsWith
:某字符串以某某开始endsWith
:某字符串以某某结束not
:不相等,可缩写成ne
containsString
:某字符串包含某某lessThan
:小于,可缩写成lt
greaterThan
:大于,可缩写成gt
lessThanOrEqualTo
:小于或等于,可缩写le
greaterThanOrEqualTo
:大于或等于,可缩写成ge
更多方法及使用查看org.hamcrest.Matchers
hrun4j提供一套完整的命令工具集,统称为
瑞士小军刀`,小巧而细腻,功能又强大。
后期会扩展更多命令行支持。
内置强大的表达式引擎,支持 Aviator 和 BeanShell 脚本,借助他们即可轻松实现复杂的动态业务逻辑。
关于表达式使用,在实际接口测试过程中有很多的业务场景需要进行动态运算或者业务定制化功能开发。如果框架只支持简单数据报文发送、接收以及结果校验,远远无法解决问题,因此需要引入表达式的支持。hrun4j
支持 Aviator 和 BeanShell 脚本,使用方法非常简单:${Aviator表达式内容|内置方法}
,更多用法参考:更多用法这里
框架响应数据内置对象有: 1. status_code:Integer 类型,用于存储响应码
框架提供多个内置方法,方法引用方式:${方法名 (方法参数)}:
hrun4j
支持中英文切换,只需要一个参数即可轻松切换。
备注:i18n 全称为 internationalization
限于篇幅,该文主要是概览性介绍hrun4j
核心知识,如果想对项目深入了解可访问
如果入群方式已关闭,框架使用上若有疑问,可先加微信【wytest
】(请备注 地区+公司+称呼
)再入群交流
感谢 DebugTalk(李隆),为行业带来这么优秀的测试框架 HttpRunner。
强烈推荐阅读 《提问的智慧》、《如何向开源社区提问题》 和 《如何有效地报告 Bug》、《如何向开源项目提交无法解答的问题》,更好的问题更容易获得帮助。