五分鐘技術(shù)趣談 | JsonSchema在接口測(cè)試中的應(yīng)用
Part 01
什么是JSON Schema?
JSON Schema是一種用于描述和驗(yàn)證JSON數(shù)據(jù)結(jié)構(gòu)的規(guī)范。它提供了一種結(jié)構(gòu)化的方式來定義JSON數(shù)據(jù)的期望結(jié)構(gòu)、類型、格式、約束條件等,通過JSON Schema我們可以確保接收到的JSON數(shù)據(jù)符合預(yù)期的規(guī)范,并對(duì)其進(jìn)行有效性驗(yàn)證。
以下是一個(gè)簡(jiǎn)短的JSON Schema示例:
Part 02
JSON Schema常見關(guān)鍵字及說明
JSON Schema提供了一系列關(guān)鍵字用于描述和驗(yàn)證JSON數(shù)據(jù)的結(jié)構(gòu)和約束條件。以下是一些常見的JSON Schema關(guān)鍵字及其說明:
通過使用這些關(guān)鍵字,我們可以定義出符合預(yù)期的數(shù)據(jù)結(jié)構(gòu),以及對(duì)數(shù)據(jù)進(jìn)行有效性驗(yàn)證和約束條件的檢查。在接口測(cè)試中,合理應(yīng)用這些關(guān)鍵字可以提高測(cè)試的準(zhǔn)確性和可靠性,確保接口返回的數(shù)據(jù)符合預(yù)期要求。
Part 03
JSON Schema在接口測(cè)試中的應(yīng)用
Postman是一款功能強(qiáng)大且常見的接口測(cè)試工具,它提供了許多功能和特性,下面將介紹在Postman中如何應(yīng)用JSON Schema進(jìn)行接口測(cè)試。
1)定義JSON Schema: 在開始接口測(cè)試之前,首先需要定義JSON Schema來描述接口返回?cái)?shù)據(jù)的結(jié)構(gòu)和約束條件。可以使用任何文本編輯器創(chuàng)建一個(gè)JSON文件,并根據(jù)接口的要求定義JSON Schema。
上面的這個(gè)JSON Schema定義了一個(gè)對(duì)象,該對(duì)象包含三個(gè)屬性:age、name和email。每個(gè)屬性都有特定的類型和約束條件。
- age 屬性是一個(gè)數(shù)字類型,且必須大于等于0。
- name 屬性是一個(gè)字符串類型。
- email 屬性是一個(gè)字符串類型,并且應(yīng)符合電子郵件的格式。
此外,該JSON Schema使用required關(guān)鍵字指定了必填屬性,即age、name和email都是必需的屬性,缺少任何一個(gè)將導(dǎo)致驗(yàn)證失敗。
2)創(chuàng)建請(qǐng)求: 打開Postman并創(chuàng)建一個(gè)新的請(qǐng)求,輸入請(qǐng)求的URL、請(qǐng)求方法和其他必要的參數(shù)。確保選擇正確的請(qǐng)求方法(GET、POST、PUT等)以及正確的URL。
3)添加測(cè)試腳本:在請(qǐng)求中選擇"Tests"選項(xiàng)卡,并在其中添加JavaScript代碼作為測(cè)試腳本。測(cè)試腳本將用于驗(yàn)證接口返回的數(shù)據(jù)是否符合JSON Schema定義。
在這里我們使用pm.response.json()方法獲取接口返回的JSON數(shù)據(jù),并將其與預(yù)定義的JSON Schema進(jìn)行比較。使用tv4.validate()方法驗(yàn)證jsonData是否符合schema定義。如果數(shù)據(jù)與Schema匹配,斷言將返回true。
4)發(fā)送請(qǐng)求和運(yùn)行測(cè)試:現(xiàn)在,可以點(diǎn)擊發(fā)送請(qǐng)求并在響應(yīng)中運(yùn)行測(cè)試腳本。測(cè)試腳本將驗(yàn)證接口返回的數(shù)據(jù)是否符合JSON Schema定義,并根據(jù)結(jié)果反饋相應(yīng)的測(cè)試結(jié)果。
通過在Postman中使用JSON Schema進(jìn)行接口測(cè)試,我們可以方便地驗(yàn)證接口返回的數(shù)據(jù)是否符合預(yù)期,驗(yàn)證接口返回?cái)?shù)據(jù)的完整性、類型、格式等方面是否正確,有效的保證了數(shù)據(jù)傳遞和交互的準(zhǔn)確性和一致性。
此外,除了日常的接口測(cè)試中可以使用JSON Schema外,我們還在自動(dòng)化測(cè)試中使用,各種語言都有開源的第三方JSON Schema校驗(yàn)庫,例如Go語言的gojsonschema,Python的jsonschema等。