本文節(jié)選自霍格沃茲《測試開發(fā)實戰(zhàn)進階》課程教學(xué)內(nèi)容夜惭,進階學(xué)習(xí)文末加群产喉。
JSON Schema 簡介與安裝
JSON Schema 是描述 JSON 數(shù)據(jù)結(jié)構(gòu)的一種格式,JSON Schema 模式是一個詞匯表。通過 JSON Schema 可以注釋 JSON 的字段以及字段數(shù)據(jù)類型等信息障涯。
在實際工作中,對接口返回值進行斷言校驗,除了常用字段的斷言檢測以外征字,還要對其他字段的類型進行檢測柔纵。對返回的字段一個個寫斷言顯然是非常耗時的或详,這個時候就需要一個模板昭伸,可以定義好數(shù)據(jù)類型和匹配條件选调,除了關(guān)鍵參數(shù)外,其余可直接通過此模板來斷言灵份,Json Schema 可以完美實現(xiàn)這樣的需求仁堪。通過校驗 JSON Schema 就可以判斷 Response 是否符合約定。
一個 JSON 格式的數(shù)據(jù)填渠,通常是由以下一種或多種數(shù)據(jù)類型組成的:
- string
- Numeric(integer弦聂、number)
- object
- array
- boolean
- null
JSON Schema 中對上面的 6 種數(shù)據(jù)類型,都有相應(yīng)的屬性對其進行描述氛什。
Json Schema 官網(wǎng):http://json-schema.org/implementations.html
環(huán)境準備
安裝 JSON Schema 包:
pip install jsonschema
JSON Schema 的使用
JsonSchema 模板生成
1. 首先要借助于 Json Schema Tool 的網(wǎng)站:
將返回 JSON 字符串復(fù)制到頁面左邊莺葫,然后點擊 INFER SHCEMA,就會自動轉(zhuǎn)換為 Schema JSON 文件類型枪眉,會將每個地段的返回值類型都設(shè)置一個默認類型捺檬;在 pattern 中也可以寫正則進行匹配:
2. 點擊“設(shè)置”按鈕會出現(xiàn)各個類型返回值更詳細的斷言設(shè)置,這個就是 Schema 最常用也是最實用的功能贸铜,也可以對每種類型的字段最更細化的區(qū)間值校驗或者斷言欺冀,例如長度,取值范圍等萨脑。
3. 點擊復(fù)制按鈕隐轩,可以將生成的 Schema 模板保存下來涩咖。
JSON Schema 校驗案例
下面有個 JSON Schem 例子蘸炸,它只有兩個重要字段 name 和 price。這個 schema 規(guī)定 name 必須是 string 類型济榨,price 必須是 number 類型鹊杖。使用 JSON Schema 進行校驗悴灵,使用 validate 方法,輸入一個 name 為 Eggs 和 price 為 34.99 的數(shù)據(jù)進行校驗:
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骂蓖,則會出現(xiàn)報錯:
>>> 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 errorjsonschema.exceptions.ValidationError: 34.99 is not of type 'string'
以上积瞒,JSON Schema 作為接口測試的數(shù)據(jù)校驗利器讓工作變得更加高效,也更好的實現(xiàn)了接口監(jiān)控登下,能知道哪里出了問題并及時糾正茫孔。更多內(nèi)容叮喳,在后續(xù)章節(jié)探討。
(文章來源于霍格沃茲測試學(xué)院)