Postman使用tv4進行JSON Schema結構驗證和斷言

JSON Scheme簡介

對于JSON格式的請求數(shù)據或者響應數(shù)據,在不同的數(shù)據和場景下往往會有一部分動態(tài)的值及字段。此時我們可以使用JSON Scheme Validator(JSON結構驗證)來驗證JSON的結構,各參數(shù)及嵌套參數(shù)的類型,以及必要字段。
如:GET http://httpbin.org/get?a=a的響應數(shù)據:

{
   "args": {
       "a": "a"
   },
   "headers": {
       "Accept": "*/*",
       "Accept-Encoding": "gzip, deflate",
       "Cache-Control": "no-cache",
       "Host": "httpbin.org",
       "Postman-Token": "08abebe1-eaa4-46a2-9b3a-0f2a5580c44f",
       "User-Agent": "PostmanRuntime/7.15.0"
   },
   "origin": "164.52.33.194, 164.52.33.194",
   "url": "https://httpbin.org/get?a=a"
}

我們可以驗證其結構為:

  1. 整體是一個(類型為)object對象,包含屬性args, headers,origin,url, 必要字段(必須出現(xiàn)的字段)假設為所有
  2. args類型為object, 包含屬性a, a類型為string
  3. headers類型為object, 包含屬性Accept, Accept-Encoding, Cache-Control, Host, Postman-Token, User-Agent, 這些類型都為string
  4. origin類型為string
  5. url類型為string

轉為JSON Schema語法如下:

{
    "type": "object",
    "properties": {
        "args": {"type": "object","properties": {"a": {"type": "string"}} },
        "hearders": {
            "type": "object",
            "properties": {
                "Accept": {"type": "string"},
                "Cache-Control": {"type": "string"},
                "Host": {"type": "string"},
                "Postman-Token": {"type": "string"},
                "User-Agent": {"type": "string"},
            },
        },
        "origin": {"type": "string"},
        "url": {"type": "string"},
    },
    "required": ["args", "headers", "origin", "url"]
}

object類型的驗證格式一般為:

{
    "type": "object",
    "properties": {...}
     "required": [....]
}

其中type類型指定為object, properties下寫各個子屬性,required中填寫必須要出現(xiàn)的元素,required中為注明的元素可以不出現(xiàn),但出現(xiàn)則必須是限定的類型。

array類型的驗證格式一般為:

{
    "type": "array",
    "items": {...}
     "required": [....]
}

其中type類型為array, items下寫各個子項, required中填寫必須要出現(xiàn)的元素。

string類型的驗證格式:

{"type": "string"}

integer類型的驗證格式:

{"type": "integer"}

JSON Scheme還支持引用等很多復雜的語法,詳細可以參考:http://json-schema.org/

Postman tv4使用

tv4即 Tiny Validator for JSON data的縮寫,微型JSON結構驗證器。
在Postman中的使用方法也很簡單,首先在Tests腳本中根據響應編寫JSON Schema結構模板,然后使用tv4.validate(jsonData, schema)進行驗證即可,如下圖:


Postman tv4驗證JSON Schema

Tests代碼如下:

var schema = {
    "type": "object",
    "properties": {
        "args": {"type": "object", "properties": {"a": {"type": "string"}}},
        "hearders": {
            "type": "object",
            "properties": {
                "Accept": {"type": "string"},
                "Cache-Control": {"type": "string"},
                "Host": {"type": "string"},
                "Postman-Token": {"type": "string"},
                "User-Agent": {"type": "string"},
            },
        },
        "origin": {"type": "string"}, 
        "url": {"type": "string"},
    },
    "required": ["args", "headers", "origin", "url"]
}


pm.test('Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
  
});

運行可看到,斷言通過:


斷言通過
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容