接口測試框架實戰(四)| 搞定 Schema 斷言


接口測試框架實戰(四)| 搞定 Schema 斷言

 

本文節選自霍格沃茲《測試開發實戰進階》課程教學內容。

JSON Schema 簡介與安裝

JSON Schema 是描述 JSON 數據結構的一種格式,JSON Schema 模式是一個詞匯表。通過 JSON Schema 可以注釋 JSON 的字段以及字段數據類型等信息。

在實際工作中,對接口返回值進行斷言校驗,除了常用字段的斷言檢測以外,還要對其他字段的類型進行檢測。對返回的字段一個個寫斷言顯然是非常耗時的,這個時候就需要一個模板,可以定義好數據類型和匹配條件,除了關鍵參數外,其余可直接通過此模板來斷言,Json Schema 可以完美實現這樣的需求。通過校驗 JSON Schema 就可以判斷 Response 是否符合約定。

一個 JSON 格式的數據,通常是由以下一種或多種數據類型組成的:

  1. string
  2. Numeric(integer、number)
  3. object
  4. array
  5. boolean
  6. 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 中也可以寫正則進行匹配:

接口測試框架實戰(四)| 搞定 Schema 斷言

 

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

接口測試框架實戰(四)| 搞定 Schema 斷言

 

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

接口測試框架實戰(四)| 搞定 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 作為接口測試的數據校驗利器讓工作變得更加高效,也更好的實現了接口監控,能知道哪里出了問題並及時糾正。更多內容,在后續章節探討。

想關注更多內容,可關注公眾號:霍格沃茲測試學院


免責聲明!

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



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