? ? ? ?最近在測(cè)第三方接口返回?cái)?shù)據(jù)入庫(kù)是否正確的需求。這個(gè)第三方接口返回的是一個(gè)json串扬卷,格式化后有近2000行酿愧,且json串的層級(jí)關(guān)系達(dá)到7,8層邀泉,非常復(fù)雜嬉挡。
? ? ? ?測(cè)試的基本流程是這樣的:
? ? ? ? ? ? ? ? ? 1钝鸽,調(diào)用開發(fā)接口,會(huì)解析返回的Json庞钢,然后將數(shù)據(jù)insert到8張表中?
? ? ? ? ? ? ? ? ? 2拔恰,測(cè)試需要是要對(duì)這8張表的字段值進(jìn)行check,看字段的值是否正確
? ? ? ? 一般情況下我們校驗(yàn)結(jié)果都采用assert基括,由于assert的特性颜懊,只要不匹配就中斷程序。在這種情況下對(duì)每個(gè)字段校驗(yàn)采用assert會(huì)極大影響測(cè)試效率风皿,增大測(cè)試腳本的調(diào)試成本和測(cè)試時(shí)間成本河爹,不可取。為了避免上面的情況桐款,解決的辦法有兩種:
? ? ? ? ? 1咸这,封裝assert方法,即使不匹配也能繼續(xù)執(zhí)行下去
? ? ? ? ? 2魔眨,每個(gè)字段的校驗(yàn)不采用assert媳维,而是將不匹配的結(jié)果放入StringBuild中輸出,只在最后的結(jié)果檢驗(yàn)中用assert
? 比如:new StringBuild("xxxx 數(shù)據(jù)校驗(yàn)").append("字段1...").append("字段2...")......
? ? ? ?我們的assert只需要看最后的輸出內(nèi)容是否是:"xxxx 數(shù)據(jù)校驗(yàn)" 就行遏暴,如果不是代表有字段值不匹配侄刽,我們就具體分析輸出的結(jié)果,還可以一次分析多個(gè)字段值不匹配的情況朋凉,提高測(cè)試效率州丹。