JMeter配置元件(一)

一 前言

环境: window 10 JMeter 5.3
记录一些常用的配置元件的用法

二 Configuration elements 配置元件

Configuration elements(配置元件)的作用就是给其后面的sampler(同作用域)准备好需要的数据,需要注意的是,配置原件总是比同作用域的sampler先执行

这有点像是定时器,他们存在的意义都是为同作用域的sampler服务,都会比同作用域的sampler先执行

1 CSV Data Set Config

适合将大量数据放在文本文件中供sampler使用,或者从文本文件中取出一个随机值

先看一个例子
image
image
image
文本文件内容
image

结果
image
image

利用 CSV Data Set Config,可以将文本文件中的数据按行读取出来赋予对应的变量
默认情况下,文件只打开一次,每个线程将使用文件中的不同行,由于可能配置为不同的线程同时执行,所以对应数据在sampler中的执行顺序是随机的,可能与文本文件中的顺序不同

CSV Data Set Config各个参数的简单说明
image
Delimiter: 文本文件里,每行数据各个数据间的分隔符
Ignore first line:文本文件里,首行是字段名而非数据的话可以忽略。 如果变量名参数未设置,则这里不能忽略,文本文件的首行必须是字段名
Allow quoted data: 是否允许文本文件中的数据包含双引号
Recycle on EOF: 读取到文件末尾的时候是否再次从头开始循环读取
Stop thread on EOF: 到文件末尾的时候线程停止
Sharing mode: 默认选择第一个
image

2 HTTP Request Defaults

这个很好理解,多个sampler有相同的参数的话,如server name 、ip、port number等,在这里配置一遍后,后面的saampler中相对应的参数空着就行,不用重复配置
image

3 HTTP Header Manager

这个和 HTTP Request Defaults类似,配置默认的http header 信息,这样后面的同作用域http sampler发送请求时都会有配置好的header信息
image
Content-Type : application/x-www-form-urlencoded 或者 application/json

User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0 sec-ch-ua-platform: "Windows"

经常会发现一些header信息未配置或者未配置对,http请求会失败

cookie管理器有两个功能

  • 根据请求的返回值自动存储cookie信息(也可手动添加cookie信息)
  • 在后续请求中自动带上之前存储的cookie信息
    总之,它能像浏览器一样存储并发送cookie信息,譬如购物网站,我们登录后是有身份信息的,用以区分谁是谁,而身份信息通常就在登录请求返回的cookie信息里,在后续其它页面如购物记录的请求,浏览器会自动带上之前的cookie信息,所以我们看到的是自己的购物信息而不是别人的信息

示例

某网站用户登录后,会自动调用一个msg开头的信息的接口,显示该用户收到的通知信息数量,退出时,会调用一个logout接口,后面两个接口发送时都需要登录接口返回的cookie信息
image
image
image

image
image
image
由于这里是自动获取cookie,所以cookie管理器直接添加就行了,注意添加的位置,不是在登录或者其他请求的子节点,而是和所有请求并列的位置,因为这里cookie管理器会对所有sampler起作用,而不是针对其中某一个
image

image
image

image
image
image
结果
image
image

image

HTTP cookie管理器会自动储存cookie信息,那它是如何判断请求返回的数据中有cookie信息呢?总有个判断依据吧,查了一下,它是根据 HTTP 响应头部中的 Set-Cookie 指令来判断接口是否返回了 Cookie。 所以有些网站的接口返回信息中没有Set-Cookie字段信息,那就可能需要配置后置处理器来截取返回数据中的登录凭证,以供后面接口使用

相关配置

配置1

可以手动将cookie添加到cookie管理器中。这样的话,cookie将被所有JMeter线程共享。
image
Clear Cookies each Iteration: 如果选中,则每次执行主线程组循环时都会清除所有服务器定义的cookie。任何在GUI中定义的cookie都不会被清除
standard表示用于管理Cookie的Cookie策略。"standard"是自3.0以来的默认值
User-Defined Cookies:这些要查看具体要添加的cookie信息

配置2

接收到的cookie可以存储为JMeter线程变量。要将cookie保存为变量,请定义属性"CookieManager.save.cookies=true"。 这可在jmeter.property文件更改

示例
添加一个debug dampler,Jmeter variables设置为True
image
更改前是没有cookie变量的

image
更改后是有的

配置3

被存为变量cookie名称以“COOKIE_”作为前缀,要修改前缀,请定义属性“CookieManager.name.prefix=”(一个或多个空格)。如果启用,名称为TEST的cookie的值可以引用为${COOKIE_TEST}

配置4

JMeter检查接收到的cookie是否对URL有效。这意味着不存储跨域cookie。如果你已检查过或希望跨域cookie被使用,定义JMeter属性“CookieManager.check.cookies=false”

配置5

如果在一个采样器的作用域中有多个Cookie Manager,那么目前没有办法指定要使用哪一个。此外,存储在一个cookie管理器中的cookie对任何其他管理器都不可用,因此要小心使用多个cookie管理器

配置6

默认情况下,null值的cookie将被忽略。这可以通过设置JMeter属性来改变:CookieManager.delete_null_cookies=false。这也适用于手动定义的cookie -任何此类cookie将在更新时从显示中删除。还要注意,cookie名称必须是唯一的——如果第二个cookie用相同的名称定义,它将替换第一个cookie。

posted @ 2024-04-27 16:21  工作手记  阅读(61)  评论(0编辑  收藏  举报