JSON Schema是用來標記和校驗JSON數據,類似于XMLSchema,可用在自動化測試驗證JSON數據。
官網:http://json-schema.org/
最常用版本:draft 04。(目前各類編程語言對draft 04支持最廣泛)
舉個例子
假如你有一個接口響應數據,返回了用戶信息注冊相關的信息,內容如下:
在上面的例子中,注冊接口要求提供code,msg,copyright,data4個成員,其中code是數值,msg、copyright是字符串,data是一個對象,data又包含了id、reg_name、mobile_phone3個成員。
如果想對code=0和msg=OK進行斷言,可以使用JSON Schema來規范,對應的JSON Schema如下:
語法規則
既然JSON Schema是用來標記和校驗JSON數據,那么咱們首先介紹下json中的數據類型,如下:
通過上述6種類型自由組合可以構建更復雜的JSON結構,比如上面的用戶注冊響應結果。JSON Schema會針對這6種數據類型進行各種各樣的約束。JSON Schema本身也是一種JSON數據,也要遵循JSON格式。
01 最外層字段
type可選值:
例子:
符合要求的JSON:
array常用屬性:
例子:
符合要求的JSON:
number常用屬性:
例子:
符合要求的JSON:
在number中沒有等于的約束,那怎么解決呢?答案:minimum和maximum同一個值就行了比如說5,因為minimum>=5加上maximum<=5的取值范圍只有5。
string常用屬性:
例子:
符合要求的JSON:
在string中沒有等于的約束,怎么解決呢?兩種方式,第一種是用正則表達式,但是不在這里展開講,有興趣的小伙伴可以看我另一篇文章。第二種是用枚舉enum。
枚舉enum:
符合要求的JSON:
-
"a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。
-
"a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。
-
"a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。
內部引用definitions和$ref :
definitions用來定義公共約束,注意definitions只是定義約束如果沒有引用則約束不生效。$ref用來引用definitions中定義的約束。
例子:
上述jsonschema描述:必須是Object類型,并且有mobilephone_1和mobilephone_2屬性,屬性的約束來自definitions#mobilephone。
符合要求的JSON:
02 聚合關鍵字allOf、anyOf、oneOf、not
-
allOf 必須滿足所有的約束才算通過
例子:
符合要求的JSON:
-
anyOf 必須滿足任意一個或多個約束才算通過
例子
符合要求的JSON:
-
oneOf 必須滿足任意一個約束才算通過
例子:
符合要求的JSON:
-
not 不是給出的約束即可
例子:
符合要求的JSON:
?
總結:
感謝每一個認真閱讀我文章的人!!!
作為一位過來人也是希望大家少走一些彎路,如果你不想再體驗一次學習時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,在這里我給大家分享一些自動化測試的學習資源,希望能給你前進的路上帶來幫助。
軟件測試面試文檔
我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。
?
? ? ? ? ? 視頻文檔獲取方式:
這份文檔和視頻資料,對于想從事【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點下方小卡片即可自行領取。