微服務接口測試中的參數傳遞

發表于:2020-3-09 10:30  作者:肖哥shelwin   來源:測試不將就

字體: | 上一篇 | 下一篇 |我要投稿 | 推薦標簽: 軟件測試技術 接口測試

  這是一個微服務蓬勃發展的時代。在微服務測試中,最典型的一種場景就是接口測試,其目標是驗證微服務對客戶端或其他微服務暴露的接口是否能夠正常工作。對于最常見的基于Restful風格的微服務來說,其對外暴露的接口就是HTTP端點(Endpoint)。
  這種情況下,完成微服務接口測試的主要方式就是構造并發送HTTP請求消息給微服務,然后接收并驗證微服務回復的HTTP響應消息。在這個過程中,最基礎的工作是正確構造HTTP請求消息。
  一條HTTP請求消息中,包含各種各樣的參數。了解HTTP請求參數的類型,對于我們正確構造HTTP請求消息十分重要。接下來,我們就一起看看HTTP請求消息中可能包含哪些類型的參數,以及它們各自的特點。
  路徑參數(path parameter)。在HTTP中,URL是一個很基本的概念,它表示的是服務端資源的路徑,供客戶端尋址和訪問。URL一般是常量字符串,但在有些情況下,URL中某些部分是可變的。路徑參數就是URL中可變的部分,其描述方式為{參數名}。例如,路徑/blogs是不變的,而路徑/blogs/{id}是可變的,其中可變的id就是路徑參數。
  路徑參數一般用來指定集合中的某個具體元素。例如,服務端可能有許多blogs,而/blogs/{id}表示的就是某一篇具有特定id的blog。路徑參數的特點如下:
  一個URL中可以包含多個路徑參數。
  在傳遞路徑參數時,直接將{參數名}替換成具體的值,例如/blogs/123456。
  路徑參數是必填的,不是選填的。
  查詢參數(query parameter)。和路徑參數相同的是,查詢參數也是URL的一部分,通常用來對資源進行排序或過濾。除此之外,它們有許多不同點:
  查詢參數以?符號開始,并以鍵值對(參數名=參數值)的形式呈現,同時用&符號區分不同鍵值對。例如/blogs?date=20200305&category=work就包含了兩個參數date和category,傳遞的值分別是20200305和work。
  根據服務端要求的不同,路徑參數可以賦值,也可以不賦值(為空),還可以完全不傳遞。
  查詢參數和路徑參數存在另一個共同點,那就是統一遵守URL編碼。URL編碼也叫做百分號編碼,是針對一些URL中無法直接包含或者有特殊意義的字符進行編碼的方式,例如空格被編碼為%20,%被編碼為%25。
  Request Headers參數。路徑參數和查詢參數都是URL的一部分。在HTTP定義中,它們都位于HTTP請求消息的頭部。實際上,對于HTTP消息頭部來說,除了可以包含路徑參數和查詢參數外,還可以包含許多其他參數。它們統一叫做Request Headers參數。
  這些參數屬于metadata,即數據的數據,是用來描述其他數據的數據。例如Content-Length參數用來描述HTTP body的字節長度,Accept-Encoding參數用來描述客戶端接受的文本編碼方式。
  Request Body參數。除了HTTP消息頭部能夠攜帶參數之外,HTTP消息體(body)也可以包含參數。HTTP body自身有許多類型,其具體類型由HTTP head中的Content-Type參數決定。對于不同類型的HTTP body來說,其攜帶參數的方式也是不同的。舉例如下。
  最經典的HTTP body類型是application/x-www-form-urlencoded,即URL編碼的表單。其傳遞參數的方式與查詢參數十分相似,例如date=20200305&category=work。當然也存在細微的區別。
  具體來說,雖然application/x-www-form-urlencoded類型的body也是采用URL編碼方式,但是編碼規則略有不同。例如在URL編碼中,空格的默認編碼是%20,而在application/x-www-form-urlencoded類型的body中,其編碼既可以是%20,也可以是+。
  這類表單參數最大的一個不足,就是不能傳遞嵌套參數。在需要傳遞嵌套等復雜類型參數時,我們可以使用JSON類型的body。在HTTP中,JSON是MIME媒體類型的一種,其Content-Type為application/json。它可以傳遞各種復雜類型的參數,例如:{"date": "20200305", "category": ["work", "life"], "title": {"subtitle":"http"}}。
  當然,HTTP body類型遠遠不止這兩種,傳遞參數的方式也還有更多,例如XML參數,文件上傳參數,二進制參數等。
  以上介紹了幾種主要的HTTP請求參數類型和傳遞方式。需要注意的是,它們只是理論。在工程實際中,如何運用這些參數呢?這時候,需要結合工具(例如swagger,postman,Python requests)的特點,具體情況具體分析。

      本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系博為峰小編(021-64471599-8017),我們將立即處理

評 論

論壇新帖

頂部 底部


建議使用IE 6.0以上瀏覽器,800×600以上分辨率,法律顧問:上海信義律師事務所 項棋律師
版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2021, 滬ICP備05003035號
投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

滬公網安備 31010102002173號

51Testing官方微信

51Testing官方微博

掃一掃 測試知識全知道

日本av