進行接口測試最難的部分不就是去比對你需要比對的數(shù)據(jù)嗎谢谦?因為你永遠(yuǎn)不知道释牺,面對你的數(shù)據(jù)是長什么樣的。
一回挽、簡單的單行數(shù)據(jù)比對
?比如現(xiàn)在我們設(shè)計第一條用例是這樣的
?其中預(yù)期的結(jié)果是這樣的
?在jmeter運行一下没咙,看看結(jié)果:
?在這兒就有很大的疑問了,明明是兩個一樣的結(jié)果千劈,為什么比對會失敗呢祭刚?后來,我分析可能的原因之一就是預(yù)期結(jié)果里面有空格墙牌,而數(shù)據(jù)庫的數(shù)據(jù)是以“\t”的表格形式存在的涡驮,所以我想先在csv文件里面動動手腳,驗證一下我的想法喜滨。
?動了手腳之后你會發(fā)現(xiàn)捉捅,要是需要你比對多行數(shù)據(jù)庫的數(shù)據(jù),怎么辦虽风?難道你一個一個去加“\t”嗎棒口?有馬飛就會說,我有能力啊辜膝,我可以寫段java代碼自動添加无牵,那估計是你的本事到位了。當(dāng)然厂抖,要是你的測試場景比較簡單茎毁,選擇這樣的方式也是可以的。
?反正忱辅,方法有很多七蜘,代碼這個方法固然行得通,但是jmeter有更好的方向讓你選擇耕蝉。
二崔梗、面對多行數(shù)據(jù)比對
1、
?剛才說jmeter有更好的選擇垒在,那究竟是啥呢?
【思路一】
經(jīng)過參考了另一位馬飛對jmeter控件的介紹,可以運用的方法之一就是
傳送門:https://blog.csdn.net/u012167045/article/details/72638507
就是把數(shù)據(jù)庫查出來的每個字段场躯,以自定義變量的形式去展示谈为,但是需要自己去定。就像這樣(引用):
??jmeter官網(wǎng)給的解釋是:如果給這個參數(shù)設(shè)置了值踢关,它會保存sql語句返回的數(shù)據(jù)和返回數(shù)據(jù)的總行數(shù)伞鲫。假如,sql語句返回2行签舞,3列秕脓,且variables names設(shè)置為A,,C,那么如下變量會被設(shè)置為:
????A_#=2 (總行數(shù))
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (總行數(shù))
C_1=第3列, 第1行
C_2=第3列, 第2行
腳本這樣去設(shè)置
參照上面去引用就行儒搭,可以通過代碼去比對字符串吠架。
2、
?做過web接口測試都了解過搂鲫,比對的數(shù)據(jù)大多數(shù)都是json格式的傍药,要是還用方式一的話,顯得過于麻煩魂仍,為何不直接來一個json的格式去比對呢拐辽?
???參照網(wǎng)上的一些方法,我進行了一些修改:
【有必要的話需要自己去導(dǎo)關(guān)于json的包】
導(dǎo)包方法傳送門:http://www.cnblogs.com/BlueSkyyj/p/8819512.html
在csv就可以運用json格式進行修改:
最后的結(jié)果展示:
順便給出多行數(shù)據(jù)對比的情況:
這樣的話擦酌,面對多行數(shù)據(jù)的比對俱诸,我們就以json格式去擴展字段,美滋滋赊舶!