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

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

本文節(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ù)類型組成的:

  1. string
  2. Numeric(integer弦聂、number)
  3. object
  4. array
  5. boolean
  6. 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)站:

https://www.jsonschema.net/

將返回 JSON 字符串復(fù)制到頁面左邊莺葫,然后點擊 INFER SHCEMA,就會自動轉(zhuǎn)換為 Schema JSON 文件類型枪眉,會將每個地段的返回值類型都設(shè)置一個默認類型捺檬;在 pattern 中也可以寫正則進行匹配:

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

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

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

3. 點擊復(fù)制按鈕隐轩,可以將生成的 Schema 模板保存下來涩咖。

接口測試框架實戰(zhàn)(四)| 搞定 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é)院)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缰贝,一起剝皮案震驚了整個濱河市馍悟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剩晴,老刑警劉巖锣咒,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赞弥,居然都是意外死亡毅整,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門绽左,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼嫉,“玉大人,你說我怎么就攤上這事妇菱〕性粒” “怎么了暴区?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵闯团,是天一觀的道長。 經(jīng)常有香客問我仙粱,道長房交,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任伐割,我火速辦了婚禮候味,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隔心。我一直安慰自己白群,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布硬霍。 她就那樣靜靜地躺著帜慢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唯卖。 梳的紋絲不亂的頭發(fā)上粱玲,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音拜轨,去河邊找鬼抽减。 笑死,一個胖子當著我的面吹牛橄碾,可吹牛的內(nèi)容都是我干的卵沉。 我是一名探鬼主播颠锉,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偎箫!你這毒婦竟也來了木柬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淹办,失蹤者是張志新(化名)和其女友劉穎眉枕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怜森,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡速挑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了副硅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姥宝。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恐疲,靈堂內(nèi)的尸體忽然破棺而出腊满,到底是詐尸還是另有隱情,我是刑警寧澤培己,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布碳蛋,位于F島的核電站,受9級特大地震影響省咨,放射性物質(zhì)發(fā)生泄漏肃弟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一零蓉、第九天 我趴在偏房一處隱蔽的房頂上張望笤受。 院中可真熱鬧,春花似錦敌蜂、人聲如沸箩兽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汗贫。三九已至,卻和暖如春囊陡,著一層夾襖步出監(jiān)牢的瞬間芳绩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工撞反, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妥色,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓遏片,卻偏偏與公主長得像嘹害,于是被迫代替她去往敵國和親撮竿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355