(一)json 断言
$.表示的是响应体, 后面就是响应体的key
Expected Value 预期值也可以参数化, 特别是多线程的时候,可以参数化使用csv文件里的数据进行校验
在jmeter中, 引用变量是 ${var}, 在postman中是 {{ }} , 常常容易搞混了
(二)json提取器
其中 Math No. (0 for Random) 的意思是,如果要提取的路径有相同的, 怎么办?
0 是随机取一个, 1是提取第一个, 一般情况下要提取的 json 路径最好是唯一的,因此写1
(三)读取csv 文件
可以根据自己的需要选择, 没有其他线程组的情况下, 又不希望是所有线程一起共享读取的进度,可以保持默认或者手动选择当前线程组
csv文件如果是单线程,循环多次, 也会共享csv文件的读取位置,继续往下读,因为单线程也是归属于线程组里管理的,只要它所属的线程组有权限读取就行
jmeter里可以设置多个csv文件读取器,不用强行把所有数据都存到一个csv文件中
(四) 随机数和时间戳(毫秒级)的使用
在函数助手中选择 time 和 Random 就可以了,
可以把这两个一起使用,就可以使得生成的某个订单数据不重复
但是不可以 两个随机函数紧挨着使用
这样会直接报错的
(五)jmeter设置通讯协议, 写http或者https 都行, 但是写了http或者https之后, 就别写端口号了, 就会自动走http或者https的默认端口号, 而且 jmeter有内置处理, 即使设置上是http , 但服务器实际上是走https 协议, 或者反过来, jmeter也会帮我自动处理, 除非是那种不是走默认端口的, 就需要手动写
(六)json提取器提取多个变量
存储的变量名之间用分号隔开, 提取的路径也是用分号隔开,要和变量的个数保持一致, 并且只可以用分号,不能分号之后 再弄个空格键隔开
0 for Random 中要写1 ,也是用分号隔开,有几个变量就写几个1,或者都不写也行, 这是表示如果按照路径去找,返回的结果有多个的时候选择哪个? 0代表是随机选择
(七) jmeter 如果要传递 json格式的数据, 请求头里一定要有
“Content-Type”:“application/json”
否则就是发送的请求就会失败, 它并不像postman, 如果你的格式是Json , 少写了这个请求头也无所谓,会自动给你补全
(八) jmeter请求头 的设置,容易犯错的地方
就是不需要使用"" 包裹字符串, 内置已经处理了, 如果我们自行加上"" 反而就会报错
(九) 用 navicat 导出的 csv 数据, 自带双引号(用excel 看不到双引号, 用nopad++ 打开就看到双引号, 应该是由于导出的字段是字符串所引起的 )
把这个查询结果导出到csv 文件后 , 用 jmeter 直接读取的时候, 就会把双引号也读取进去, 从而导致请求失败, 因为在 jmeter 中, 请求头的参数无论是不是字符串, 都不需要自行加双引号,
那么要如何解决呢?
把这个是否允许带引号,设置成 True , 就会把读取的csv 数据中的双引号给过滤掉,
这个时候可以看到请求头里的数据没有双引号了
其实在 jmeter中, 除了请求体的json 格式, 其他的都不需要自行补上双引号.
(十)读取csv 文件的时候, 如果设置了忽略首行变量名,
但是你的csv 文件中, 实际上并没有首行写上变量名, 那么就会导致把首行数据给忽略掉了, 虽然 jmeter中说是只有在设置了变量名称才生效,实际上并没有做这个的检测 ,我就是因为这个, 发现执行少了一行数据
(十一) jmeter的隐匿错误,从采样器上是看不出有啥问题的,但是又很容易发生的小错误
这个, 就是请求头在复制的时候, 后面多了个空格导致的
去到请求头中, 把空格删掉即可
在复制的时候, 要小心空格键