給你一把接口響應斷言神器,你要不要?

JSON Schema是用來標記和校驗JSON數據,類似于XMLSchema,可用在自動化測試驗證JSON數據。

官網:http://json-schema.org/

最常用版本:draft 04。(目前各類編程語言對draft 04支持最廣泛)

舉個例子

假如你有一個接口響應數據,返回了用戶信息注冊相關的信息,內容如下:

圖片

在上面的例子中,注冊接口要求提供code,msg,copyright,data4個成員,其中code是數值,msg、copyright是字符串,data是一個對象,data又包含了id、reg_name、mobile_phone3個成員。

如果想對code=0和msg=OK進行斷言,可以使用JSON Schema來規范,對應的JSON Schema如下:

圖片

語法規則

既然JSON Schema是用來標記和校驗JSON數據,那么咱們首先介紹下json中的數據類型,如下:

圖片

通過上述6種類型自由組合可以構建更復雜的JSON結構,比如上面的用戶注冊響應結果。JSON Schema會針對這6種數據類型進行各種各樣的約束。JSON Schema本身也是一種JSON數據,也要遵循JSON格式。

01 最外層字段

圖片

type可選值:

圖片

例子:

圖片

符合要求的JSON:

圖片

array常用屬性:

圖片

例子:

圖片

符合要求的JSON:

圖片

number常用屬性:

圖片

例子:

圖片

符合要求的JSON:

圖片

在number中沒有等于的約束,那怎么解決呢?答案:minimum和maximum同一個值就行了比如說5,因為minimum>=5加上maximum<=5的取值范圍只有5。

string常用屬性:

圖片

例子:

圖片

符合要求的JSON:

圖片

在string中沒有等于的約束,怎么解決呢?兩種方式,第一種是用正則表達式,但是不在這里展開講,有興趣的小伙伴可以看我另一篇文章。第二種是用枚舉enum。

枚舉enum:

圖片

符合要求的JSON:

  • "a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。

  • "a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。

  • "a"或者"b"或者"c"其中一個,如果想實現字符串等于某個值,寫成這樣:"enum": ["a"],目前枚舉只支持string類型。

內部引用definitions和$ref :

definitions用來定義公共約束,注意definitions只是定義約束如果沒有引用則約束不生效。$ref用來引用definitions中定義的約束。

例子:

圖片

上述jsonschema描述:必須是Object類型,并且有mobilephone_1和mobilephone_2屬性,屬性的約束來自definitions#mobilephone。

符合要求的JSON:

圖片

02 聚合關鍵字allOf、anyOf、oneOf、not
  • allOf 必須滿足所有的約束才算通過

例子:

圖片

符合要求的JSON:

圖片

  • anyOf 必須滿足任意一個或多個約束才算通過

例子

圖片

符合要求的JSON:

圖片

  • oneOf 必須滿足任意一個約束才算通過

例子:

圖片

符合要求的JSON:

圖片

  • not 不是給出的約束即可

例子:

圖片

符合要求的JSON:

圖片

?

總結:

感謝每一個認真閱讀我文章的人!!!

作為一位過來人也是希望大家少走一些彎路,如果你不想再體驗一次學習時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,在這里我給大家分享一些自動化測試的學習資源,希望能給你前進的路上帶來幫助。

軟件測試面試文檔

我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

?

? ? ? ? ? 視頻文檔獲取方式:
這份文檔和視頻資料,對于想從事【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點下方小卡片即可自行領取。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13694.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13694.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

202473讀書筆記|《但愿呼我的名為旅人:松尾芭蕉俳句300》——圍爐夜話,身頓心安,愿每個人都能在愛里自由馳騁

202473讀書筆記|《但愿呼我的名為旅人&#xff1a;松尾芭蕉俳句300》——圍爐夜話&#xff0c;身頓心安&#xff0c;愿每個人都能在愛里自由馳騁 &#x1f60d;&#x1f60d;&#x1f929;&#x1f929; 譯者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名為旅人&…

Lua中table.sort()使用方式

table.sort(tab,compare) 參數如下&#xff1a; tab:表名 compare:比較規則函數名 簡略寫法&#xff1a; a {1,2,3} table.sort(a,function(a,b) return a>b end) compare這個參數是一個函數&#xff0c;它有兩個參數&#xff0c;你可以理解為表中的兩個不同元素&…

智能進化:讓AI大模型變得更聰明的路徑探索

前言 隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;大模型在多個領域展現出了前所未有的能力。然而&#xff0c;它們仍然面臨著理解力、泛化能力和適應性等方面的挑戰。如何讓大模型變得更聰明&#xff0c;是當前AI研究和應用的一個重要課題。本文將探討…

解除網頁禁止選擇

控制臺輸入以下命令 復制&#xff1a;javascript:void(document.body.οncοpy) 可選&#xff1a;javascript:void(document.body.onselectstart) 拖拉&#xff1a;javascript:void(document.body.οnmοuseup)

C++實現基于http協議的epoll非阻塞模型的web服務器框架(支持訪問服務器目錄下文件的解析)

使用方法&#xff1a; 編譯 例子&#xff1a;./httpserver 9999 ../ htmltest/ 可執行文件 端口 要訪問的目錄下的 例子&#xff1a;http://192.168.88.130:9999/luffy.html 前提概要 http協議 &#xff1a;應用層協議&#xff0c;用于網絡通信&#xff0c;封裝要傳輸的數據&…

npm install [Error]

npm install 依賴的時候報錯 依賴版本問題的沖突&#xff0c;忽視即可 使用 npm install --legacy-peer-deps

剪畫小程序:3個分離人聲提取小技巧,趕緊收藏起來吧!

Hello&#xff01;大家好呀&#xff01;這里是社會主義搬磚人小畫&#xff01; 人聲分離&#xff0c;是指將混合在一起的人聲和其他聲音&#xff08;如背景音樂、環境噪音等&#xff09;分離開來&#xff0c;提取出單獨的人聲部分的過程。 在實際應用中&#xff0c;人聲分離技…

leetcode654.最大二叉樹、617.合并二叉樹、700.二叉搜索樹中的搜索

654.最大二叉樹 構造樹一般采用的是前序遍歷&#xff0c;因為先構造中間節點&#xff0c;然后遞歸構造左子樹和右子樹 確定遞歸函數的參數和返回值 參數傳入的是存放元素的數組&#xff0c;返回該數組構造的二叉樹的頭結點&#xff0c;返回類型是指向節點的指針。 TreeNode…

Unity 開發Hololens,制作面板跟隨眼鏡一起移動,(面板跟蹤)

Hololens滑動框以及面板跟蹤 創建空物體&#xff0c;并添加組件 SolverHandler、RedialView、FollowMeToggle 創建按鈕&#xff0c;控制停止/開始跟蹤 創建一個Hololens自帶的按鈕放到右上角&#xff0c;并添加事件 創建藍色背景板 創建空物體Backplate&#xff0c;下面再…

個體因果效應估計|EDVAE:用于個體治療效果估計的反事實推理中的解開潛在因素模型

【摘要】根據觀察數據估計個體治療效果&#xff08;ITE&#xff09;是一項至關重要但具有挑戰性的任務。解纏結表示已用于將代理變量分為混雜變量、工具變量和調整變量。然而&#xff0c;根據觀測數據準確地進行反事實推理來識別 ITE 仍然是一個懸而未決的問題。在本文中&#…

AppInventor2要在界面上做一個電量圖標,有什么好的思路嗎?

問&#xff1a;要在界面上做一個電量圖標&#xff0c;有什么好的思路嗎&#xff1f; 答&#xff1a;首先&#xff0c;很容易想到使用進度條相關的組件&#xff0c;原生”滑動條“組件可以嗎&#xff1f; 答案顯而易見&#xff0c;首先它的樣式自定義不夠&#xff0c;UI不外乎上…

STM32_ADC

1、ADC簡介 ADC&#xff0c;即Analog-Digital Converter&#xff0c;模擬-數字轉換器。 ADC可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量&#xff0c;建立模擬電路到數字電路的橋梁。 12位逐次逼近型ADC&#xff0c;1us轉換時間。 輸入電壓范圍&#xff1a;0~3.3…

P6【力扣144,94,145】【數據結構】【二叉樹遍歷】C++版

【144】二叉樹的前序遍歷 1、遞歸法&#xff1a; class Solution { public:void preorder(TreeNode* root, vector<int> &res){if(root nullptr){return;}res.push_back(root->val);preorder(root->left, res);preorder(root->right, res);}vector<in…

沒有密碼如何卸載卡巴斯基?

如果忘記卡巴斯基6.0的保護密碼&#xff0c; &#xff08;1&#xff09;進入安全模式下 &#xff08;2&#xff09;打開6.0的安裝目錄 Kaspersky Anti-Virus 6.0: C://Program Files//Kaspersky Lab//Kaspersky Anti-Virus 6.0 &#xff08;3&#xff09;將目錄中的avp.exe改…

CVE-2020-7982 OpenWrt 遠程命令執行漏洞學習(更新中)

OpenWrt是一款應用于嵌入式設備如路由器等的Linux操作系統。類似于kali等linux系統中的apt-get等&#xff0c;該系統中下載應用使用的是opgk工具&#xff0c;其通過非加密的HTTP連接來下載應用。但是其下載的應用使用了SHA256sum哈希值來進行檢驗&#xff0c;所以將下載到的數據…

開發過程中使用MySQL和Oracle的差異

前言 小型項目中使用MySQL的占比還是相對較高的&#xff0c;但是也不排除隨著項目的擴大&#xff0c;產品的豐富&#xff0c;或者甲方的財大氣粗&#xff0c;有可能會有MySQL換成Oracle。那么這兩者對于開發者而言&#xff0c;有什么差異化的地方呢。 官方文檔 MySQL5.7 htt…

weblogic簡介

WebLogic是美國Oracle公司出品的一個Application Server&#xff0c;它是一個基于JAVA EE架構的中間件。WebLogic主要用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。它將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的…

什么是安全左移如何實現安全左移

文章目錄 一、傳統軟件開發面臨的安全挑戰二、什么是安全左移四、安全左移與安全開發生命周期&#xff08;SDL&#xff09;三、安全左移對開發的挑戰五、從DevOps到DevSecOps六、SDL與DevSecOps 一、傳統軟件開發面臨的安全挑戰 傳統軟件開發面臨的安全挑戰主要包括以下幾個方…

yarn常用命令

Yarn 是一個快速、可靠且安全的依賴管理工具&#xff0c;用于替代 npm。以下是一些常用的 Yarn 命令&#xff0c;用于不同的包管理和項目依賴安裝場景&#xff1a; 初始化一個新的項目 yarn init這個命令會引導你創建一個 package.json 文件。 安裝依賴 yarn add [package]…

抄表:現代生活中的數據采集關鍵

1.界定與發源 抄表&#xff0c;簡單的說&#xff0c;指從各種各樣計量機器設備(如智能水表、電度表、天然氣表等)載入做好記錄使用量的全過程。這一概念自工業化時代至今就出現了&#xff0c;最初由人工進行&#xff0c;伴隨著科技創新&#xff0c;如今已經演化出自動化和遠程…