进行接口测试最难的部分不就是去比对你需要比对的数据吗?因为你永远不知道,面对你的数据是长什么样的。
一、简单的单行数据比对
比如现在我们设计第一条用例是这样的
设计的一条csv用例
其中预期的结果是这样的
sql的预期结果在jmeter运行一下,看看结果:
数据库结果 csv用例上的预期结果
在这儿就有很大的疑问了,明明是两个一样的结果,为什么比对会失败呢?后来,我分析可能的原因之一就是预期结果里面有空格,而数据库的数据是以“\t”的表格形式存在的,所以我想先在csv文件里面动动手脚,验证一下我的想法。
添加了\t的修改后修改后运行通过
动了手脚之后你会发现,要是需要你比对多行数据库的数据,怎么办?难道你一个一个去加“\t”吗?有马飞就会说,我有能力啊,我可以写段java代码自动添加,那估计是你的本事到位了。当然,要是你的测试场景比较简单,选择这样的方式也是可以的。
反正,方法有很多,代码这个方法固然行得通,但是jmeter有更好的方向让你选择。
二、面对多行数据比对
1、
刚才说jmeter有更好的选择,那究竟是啥呢?
【思路一】
经过参考了另一位马飞对jmeter控件的介绍,可以运用的方法之一就是
传送门:https://blog.csdn.net/u012167045/article/details/72638507
就是把数据库查出来的每个字段,以自定义变量的形式去展示,但是需要自己去定。就像这样(引用):
jmeter官网给的解释是:如果给这个参数设置了值,它会保存sql语句返回的数据和返回数据的总行数。假如,sql语句返回2行,3列,且variables names设置为A,,C,那么如下变量会被设置为:
A_#=2 (总行数)
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (总行数)
C_1=第3列, 第1行
C_2=第3列, 第2行
脚本这样去设置
自定义变量
参照上面去引用就行,可以通过代码去比对字符串。
2、
做过web接口测试都了解过,比对的数据大多数都是json格式的,要是还用方式一的话,显得过于麻烦,为何不直接来一个json的格式去比对呢?
参照网上的一些方法,我进行了一些修改:
结果集的形式 对比方法 响应断言的变化
【有必要的话需要自己去导关于json的包】
导包方法传送门:http://www.cnblogs.com/BlueSkyyj/p/8819512.html
在csv就可以运用json格式进行修改:
最后的结果展示:
顺便给出多行数据对比的情况:
数据库有两条数据 多行数据对比这样的话,面对多行数据的比对,我们就以json格式去扩展字段,美滋滋!
网友评论