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


JSON Scheme簡介

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

{
   "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, 必要字段(必須出現的字段)假設為所有
  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中填寫必須要出現的元素,required中為注明的元素可以不出現,但出現則必須是限定的類型
array類型的驗證格式一般為:

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

其中type類型為array, items下寫各個子項, required中填寫必須要出現的元素。
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結構模板,然后使用tv3.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;
  
});

運行可看到,斷言通過:
斷言通過


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM