欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何測試POST方法發送JSON數據的接口?

錢琪琛2年前12瀏覽0評論

之前寫過一篇關于Json完整性和一致性校驗的文章,希望對你有所幫助。

在測試工作中,一般都會接觸到期望結果數據與實際結果數據一致性比對的測試場景,對于復雜、龐大數據的比對工作。如果依靠人工執行,其成本相當高,難以保障執行結果的一致性(多次執行可能存在偏差),并且重復性極高。因此,通常我們需要考慮如何通過自動化工具實現數據的比對。

之前分享過《Python實現復雜場景下文本數據的一致性比對》文章,主要應用于文件一致性比對的測試場景。今天分享下如何實現Json數據的一致性校驗的整體設計與實現。

JSON的兩種數據結構

1.Key-Value對集合,在Python語言中可以理解為字典(Dict),如下圖。

2.有序集合,在Python語言中可以理解為列表(List),如下圖。

一致性校驗核心設計

在測試工作中接觸的Json數據校驗,大多是請求響應體的校驗,設計主要考慮了以下兩點:

1.需支持復雜JSON比對,如查詢地市編碼基本信息接口的響應體中包含,省份編碼、省份地市的基本信息(地市編碼、地市名稱、地市排序),例如:

2.需支持比對結果的可追溯,比如地市數量(Count)不一致時,不能僅輸出期望、實際結果的地市數量,還需要輸出整個JSON的哪個節點的值不一致,或者缺失哪個節點,如Detail.Count的值不一致,例如:

[ERROR]ACTUAL-JSON==>[Detail.Count]的VALUE不同:<actual>:2<expect>:3

設計實現

一致性比對的整體設計包含三個模塊:遞歸解析模塊,格式轉換模塊,數據比對模塊,具體描述如下。

遞歸解析模塊

遞歸解析,按key的層次關系,每層生成數據結構為[[key1,key2,value1],[key1,key2,value2]],代碼設計如下:

格式轉換模塊

創建節點流及值映射,數據結構為{key1.key2:value1,key1.key3:value2},如下

數據比對模塊

針對格式轉換模塊的結果,遍歷比對各節點流(如,Detail.City.sort),校驗節點與值是否一致,對于不一致的數據輸出節點流及值,輸出節點流及值,如下。

結果輸出如下:

[ERROR]ACTUAL-JSON==>[Detail.Count]的VALUE不同:<actual>:2<expect>:3

若對你有所幫助,歡迎大家評論、留言。