用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測試用例。目前這是最適合個人一種方式。

全文完。

閱讀原文

相關文章
相關標籤/搜索