
本文節選自霍格沃茲《測試開發實戰進階》課程教學內容。
JSON Schema 簡介與安裝
JSON Schema 是描述 JSON 數據結構的一種格式,JSON Schema 模式是一個詞匯表。通過 JSON Schema 可以注釋 JSON 的字段以及字段數據類型等信息。
在實際工作中,對接口返回值進行斷言校驗,除了常用字段的斷言檢測以外,還要對其他字段的類型進行檢測。對返回的字段一個個寫斷言顯然是非常耗時的,這個時候就需要一個模板,可以定義好數據類型和匹配條件,除了關鍵參數外,其余可直接通過此模板來斷言,Json Schema 可以完美實現這樣的需求。通過校驗 JSON Schema 就可以判斷 Response 是否符合約定。
一個 JSON 格式的數據,通常是由以下一種或多種數據類型組成的:
- string
- Numeric(integer、number)
- object
- array
- boolean
- null
JSON Schema 中對上面的 6 種數據類型,都有相應的屬性對其進行描述。
Json Schema 官網:http://json-schema.org/implementations.html
環境准備
安裝 JSON Schema 包:
pip install jsonschema
JSON Schema 的使用
JsonSchema 模板生成
1. 首先要借助於 Json Schema Tool 的網站:
https://www.jsonschema.net/
將返回 JSON 字符串復制到頁面左邊,然后點擊 INFER SHCEMA,就會自動轉換為 Schema JSON 文件類型,會將每個地段的返回值類型都設置一個默認類型;在 pattern 中也可以寫正則進行匹配:

2. 點擊“設置”按鈕會出現各個類型返回值更詳細的斷言設置,這個就是 Schema 最常用也是最實用的功能,也可以對每種類型的字段最更細化的區間值校驗或者斷言,例如長度,取值范圍等。

3. 點擊復制按鈕,可以將生成的 Schema 模板保存下來。

JSON Schema 校驗案例
下面有個 JSON Schem 例子,它只有兩個重要字段 name 和 price。這個 schema 規定 name 必須是 string 類型,price 必須是 number 類型。使用 JSON Schema 進行校驗,使用 validate 方法,輸入一個 name 為 Eggs 和 price 為 34.99 的數據進行校驗:
def test_schema(self):
schema = {
"type": "object",
"properties": {
"price": {"type": "number"},
"name": {"type":"string"},
},
}
validate(instance={"name": "Eggs", "price": 34.99},schema=schema)
如果將 number 寫成 string,則會出現報錯:
>>> from jsonschema import validate
>>> schema = {
... "type": "object",
... "properties": {
... "price": {"type": "string"},
... "name": {"type":"string"},
... },
... }
>>> validate(instance={"name": "Eggs", "price": 34.99},schema=schema)
返回報錯信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/lixu/Library/Python/3.7/lib/python/site-packages/jsonschema/validators.py",\
line 934, in validate
raise error
jsonschema.exceptions.ValidationError: 34.99 is not of type 'string'
以上,JSON Schema 作為接口測試的數據校驗利器讓工作變得更加高效,也更好的實現了接口監控,能知道哪里出了問題並及時糾正。更多內容,在后續章節探討。
想關注更多內容,可關注公眾號:霍格沃茲測試學院