写点什么

软件测试 | 接口自动化你不懂?听 HttpRunner 的作者怎么说

作者:测试人
  • 2022-11-17
    北京
  • 本文字数:1623 字

    阅读完需:约 5 分钟

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核


HttpRunner 最让我们惊喜的是 HttpRunner 简单易用。它做到了工具集成,也有自己的核心技术,就像 requests 代码和 HttpRunner 的 YAML 文件,你可以无缝切换。

它是一款面向 HTTP(S) 协议的通用测试框架,你确实只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。那么首先我们需要问一下,HttpRunner 是什么呢?

HttpRunner 是什么?

HttpRunner 是什么?它就是让你轻装上阵的工具,这是一款面向 HTTP(S) 协议的通用测试框架。

只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

HttpRunner 基于 Python,可以运行在 macOS、Linux、Windows 系统平台上。读到这里,你是否有疑问,HttpRunner 真是个全能手,既然它可以像 Requests 那样便利的操作 HTTP,又可以做到 jenkins 的持续集成,那它的内部一定藏着大量干货!



HttpRunner 的设计理念

不,你想错了,HttpRunner 并没有实现这么多工具!说到这里,不得不介绍一下 HttpRunner 的设计理念

  • 充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车

  • 遵循约定大于配置的准则,在框架功能中融入最佳工程实践

  • 追求投入产出比,一份投入即可实现多种测试需求

于是可以得出这个结论:HttpRunner=requests+jenkins+locust+...哦!好像明白了,它并不是闭门造轮子,而是通过整合许多工具,实现了很多功能。比如我们发 HTTP 请求,它会调用 Request。HttpRunner 只是更多的去做整合类似的工具。同时他们也在强调,希望投入非常少,回报非常丰厚,由于整合的缘故,学习 HttpRunner 的成本会非常低,如果你之前用过 Requests,现在使用 HttpRunner 的 HTTP 协议,学习成本几乎为零。下图清晰地展示了 HttpRunner 的工具集。


它们的图标也蕴含着整合的概念,从外部视角来看,拼图代表它是整体中的一个部分。从内部视角呢,它实现了一个模块化的拆分,比如用例的时候分为准备,初始化,加载,运行。其实它遵循了 unix 哲学,如果你上过 shell 课程,你会发现 shell 也是简单的命令组合,但结果却非常强大。


能力检阅

本小节会详细讲解 HttpRunner 的工作原理,带你检阅它的能力,去感受它的强大。首先,HttpRunner 以 YAML/JSON 文件为核心。你会惊讶,它仅用一份文件就实现了性能测试,持续集成,线上监控,生成测试数据等等,你必须要知道 YAML/JSON 文件的前世今生。

生成 YAML/JSON 文件有两种方式:人工编写和自动生成。人工编写的代码与 Requests 很像,比如下面是 requests 代码:



HttpRunner 的 YAML/JSON 文件对 Requests 进行精简,提取出了主要部分。下面是 HttpRunner 的文件内容,它对 Requests 改动并不是很大,实现了一个功能最小描述。可以让 HttpRunner 既简洁又规范,让你从 Requests 无缝转换到 HttpRunner。


HttpRunner 为什么不直接采用 requests 格式,而是取功能最小描述呢?你会发现,每一个接口测试都包含三个部分:构造请求,发起请求,校验。

虽然内容一样,但每个人都有自己的代码风格,如果风格不一样,理解起来会很困难,HttpRunner 采取精策略,做到了简单易懂。

以上就是人工编写的实例,实际工作中,手动编写费时费力,于是自动生成 YAML/JSON 文件深入人心。你可以利用抓包工具:Charles,Fiddler,postman,用这些软件抓取数据,然后生成 har 文件,HttpRunner 可以把这 har 文件转换成自己的 YAML/JSON,后面会有简单例子。整个过程就像下面这幅图:


现在,你知道了如何产生 YAML/JSON 文件。HttpRunner 可以利用 YAML/JSON 进行自动化测试,性能测试,持续集成,线上监控等……这么多功能得益于复用原理,你跟着下面的图片进行理解,HttpRunner 使用 Requests 进行自动化测试,他们惊喜的发现 LOCUST 居然和 Requests 原理相同。

写在最后

以上是对 HttpRunner 功能简单的介绍。很多人有个疑问,HttpRunner 不就是个整合工具嘛,他整合了 Jenkins、Requests、LOCUST,它没有自己的干货吗?其实,除了整合,HttpRunner 还做了一些非常优秀的借鉴,你想知道都有哪些吗?

发布于: 刚刚阅读数: 4
用户头像

测试人

关注

还未添加个人签名 2022-08-29 加入

还未添加个人简介

评论

发布
暂无评论
软件测试 | 接口自动化你不懂?听HttpRunner的作者怎么说_软件测试_测试人_InfoQ写作社区