HttpRunner httprunner 的 java 实现,有没有感兴趣的朋友,一起维护一下

刘光磊 · 2020年08月26日 · 最后由 测试老炮 回复于 2020年09月25日 · 22 次阅读

我自己做了一个 java 版本的 httprunner 自动化测试工具,大部分照搬了 python 的 httprunner 的逻辑,只是做了很多针对 java 的改造。
至于为什么非要再做一版 java 的,一方面可能觉得通过实际项目提升一下 java 能力,另外一个方面自己有一些大胆的设想,比如除了 http 协议以外,是否可以做一些扩展,比如测试 dubbo 接口,webService 接口等等,这些事情做起来比 python 更加方便,不过这些可能还停留在设想的阶段,并没有真正去实现。
我自己已经迁移了大约百分之八十的 httprunner 功能了,基本流程的执行都 ok 的,还剩下一点比如复杂的钩子函数,json 文件的加载,不同文件格式的加载,结果校验器的更多比对方法支持等等。
放一张测试报告和一张执行日志打印的图

可以看出来基本就是照搬了 python 的 httprunner,包括整体的架构设计也是,融入了一点自己的想法在里面。另外 java 是强类型语言,迁移过程也是很痛苦,各种转换我至今没有得到一个好的处理方法。

如果有想法做做测试工具或者想一起提升自己 java 能力的同学,请联系我,我的联系方式是
qq 405258238 邮箱 liuguanglei123@126.com 微信 15063360912
项目 git 地址
https://github.com/liuguanglei123/httprunnerforjava_public
坐标杭州,如果你也是杭州的,我们可以当面沟通。

共收到 22 条回复 时间 点赞

自己顶一下,希望更多人可以看到,欢迎大家发表中肯的看法,不管是批评还是建议我都会认真对待。

可以采用 restful 的形式将 httprunner 微服务化,毕竟现在的服务都不是一种语言

misszhang 回复

这个我确实没有想过,当前考虑的和原版 httprunner 差不多,因为以前接触过 fasterrunner,是对 httprunner 的一个封装(套壳?),内部可以直接引入 httprunner,传入标准的用例对象就可以直接使用 httprunner 的各个逻辑。
我做的这个可以作为一个 jar 包引入到别的 java 项目中,至于实现 restful,我的理解可能是套个 springboot 的壳子,可以独立作为一个服务使用,可能工作量更大一点,时间不够充裕。

刘光磊 回复

采用 flask 的框架,快速就可以生成 api 的接口,java 层只要做数据交换就可以了,和 springboot 框架没有关系,springboot 与 flask 是一样的

刘光磊 回复

其他关于一些 java 的 restful 生成,可以使用 springboot

楼主 yaml 那块是如何实现方法参数化的,目前用的是反射,但是困在如何动态传参这块了,我也是参考 httprunner 的思路在写 java 版的,不过没用 springBoot,可以搞个群交流交流啊😀

misszhang 回复

嗯嗯,理解了。不过我已经把 java 的实现都写的差不多了,就想着提供出来,给大家一个选择,或者也算是自己能力的一点点提升吧。

wu 回复

终于找到志同道合的朋友了,你可以加我的 qq 联系,之前都是我自己在独立开发,所以没有群。

wu 回复

获取方法采用的也是反射,但是暂时不支持 debugtalk.java 文件的方法重载,我是粗暴的通过方法名去获取对应的方法的。

wu 回复

我的 qq 是 405258238 可以加我一起沟通讨论下

想各位大佬学习 重学 JavaSE 中

刘光磊 回复

已加 不过 qq 玩的少 基本都是微信 私聊哈

柒意 回复

可以加我微信,一起讨论学习。微信 15063360912

没有人感兴趣吗?希望能有更多人一起维护。

httprunner 实际使用中还是有很多局限的,就比如说数据驱动这块。httprunner 是采用笛卡尔积的方式进行的,但是很明显,这样的组合很多都是不行的,我觉得有时间去用 java 实现 httprunner 的功能,还不如给它完善一些功能

xuewuhe 回复

不足肯定是有的,一个工具不太可能做到十全十美。我做这个 java 版本可能就只是想提升自己的 java 能力,确实没有考虑特别多。

看了一下代码是直接用 java 代码实现了 httprunner 的功能,代码结构都是差不多的, 这样没有突出 java 面向对象的语言特性。 其实可以用一下 java 的序列化、反序列化, 突出 java 面向对象语言的特性。

matt gong 回复

用到一点点序列化的内容,包括对象的完整复制这种场景也用到了。我是为了以后能和 httprunner 保持同步,所以尽量保持了近似的代码结构。不过最近 httprunner 做了大改版,代码结构完全不同了。

自己再顶一下。

我也不知道为啥有 httprunner 这个东西出来,jmeter 不香吗?httprunner 实现的东西,jmeter 都可以实现,jmeter 的二次开发相比 httprunner 要简单多了吧

刘光磊 回复

这块我有更好的方案分享给你,已经加你 QQ

刘光磊 关闭了讨论 11月10日 02:13
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册