用org-mode管理API测试用例

API测试用例是什么?

在互联网大行其道的今天,身为一名电商平台的程序员,一定常常与HTTP API打交道,一个常见的状况即是作API测试。抛开能够用单元测试代替的,不少时候须要真地发出HTTP请求才行。这些负责发出HTTP请求的东西多是一行curl命令,多是一个.js文件,也多是一个在postman中点击按钮的操做,但无论形态如何,它们即是API测试用例。尽管名字中带有“用例”二字,但不少时候是由人来校验结果的,用例更关注发出怎样的HTTP请求。html

为何要管理它们?

不一样于天天在浏览器中发生成千上万次的、平凡的HTTP(或HTTPS)请求,API测试用例是值得一番精心管理的,由于:git

  1. API测试用例一般会重复使用,所以必须将它们持久化保存。也许是保存成shell脚本,也许是保存成脚本语言源文件,也许是保存为某一款软件的数据文件;
  2. 须要为多个API编写测试用例,所以必须区分不一样的API对应的测试用例。例如,负责管理业务资源的服务(好比一个管理商品数据的、提供RESTful API的服务),起码须要提供增删查改的功能,那么也就须要有增删查改对应的API测试用例;
  3. 须要为多个服务的API编写用例,所以必须区分不一样的服务对应的测试用例集。例如,既然有商品服务,那么很可能还有订单服务、优惠券服务、物流服务,等等,每一个服务又都有增删查改的功能,这些不一样服务的API也须要各自的测试用例;
  4. 须要区分不一样的运行环境。一般本地、开发、测试,以及生产环境是互相隔离的,一个用例中的参数每每不能照搬到另外一个环境中。

API、服务,以及环境这三个维度上的区别,使得测试用例的数量显著增长,如不进行管理,当要用时,要么不得不从零开始再写一遍脚本,要么得翻查好久才能找到所需的用例。程序员

用org-mode管理

org-mode是什么?

org-mode是一款Emacs编辑器的扩展,它让使用者可以用快速高效的纯文本方式来记笔记、维护待办事项、安排计划,以及编写文档。org-mode的精髓在于它的大纲组织能力,以及依托于Emacs的扩展能力,二者使其正好能够胜任管理API测试用例的工做。一个.org文件的示例以下图所示github

org-mode官网的示例截图

如何用org-mode管理API测试用例?

尽管org-mode提供了丰富的功能,但只是管理API测试用例的话,并用不上太多花里胡哨的东西,只须要org-mode的大纲功能和org-babel特性便可。shell

首先用不一样的.org文件区分不一样的环境。浏览器

接着用不一样层级的headline区分不一样的服务、资源类型,以及API。babel

而后用org-mode代码块语法来编写HTTP请求。以请求https://httpbin.org/uuid为例curl

#+BEGIN_SRC restclient
  GET https://httpbin.org/uuid
#+END_SRC

#+BEGIN_SRC#+END_SRC分别表示开启和结束代码块,restclient表示这个代码块内的代码能够用Emacs的restclient-mode来编辑。在代码块中,GET https://httpbin.org/uuid表示以GET方法请求https://httpbin.org/uuid编辑器

安装了restclient后,将光标定位在代码块上并按下ctrl-c ',能够进入一个单独的buffer编辑其中的源代码工具

最后,若是配置了org-babel,甚至能够直接在代码块上按下ctrl-c ctrl-c来发出HTTP请求。

能够看到,HTTP响应的内容会保留在这个.org文件中。

后记

之前我也用过其它的工具来管理API测试用例:

  1. 刚工做的时候用的是Postman,那时候Postman仍是Chrome的一个插件;
  2. 后来出于对Firefox浏览器的喜好,找了一个叫RESTClient的插件来代替postman,长此以往发觉二者的差距蛮大,终究没法代替;
  3. 接着遇到了Emacs中的restclient.el,因而用了好一段时间的纯restclient-mode(没有搭配org-mode);
  4. 再后来开始用Mac办公了,便开始寻找Mac下的这类工具,遇到了Insomnia。若是有人找我推荐用于HTTP API测试的GUI工具的话,我会毫无不犹豫地推荐这款。

再后来,我又回到了Emacs,并用org-mode来管理这些API测试用例。目前这是最适合个人一种方式。

全文完。

阅读原文

相关文章
相关标签/搜索