本文共 2528 字,大约阅读时间需要 8 分钟。
相关扩展文章:
今天大家一起来学习一下参数化的一个重要工具,我们在写脚本时,经常要用到参数化,而实现参数化最常用的方法之一就是使用CSV Data Set Config元件,使用方便,功能强大。
简单的使用方法估计大家都会,或者说很容易就会了,但是,如果说是比较复杂的配置,估计就有很多人会被绕晕了(我刚开始也经常晕~),今天咱们就详细看看,怎么才能不晕!哈哈
首先来看一眼长啥样,相信大家都比较熟悉
该元件的作用:
从文件中读取变量值,用于变量的参数化,可设置多种读取方式。
各填写项说明:
1、名称、注释:元件的名称及注释,可自定义
2、Config the CSV Data Source:配置数据源
1)Filename:csv文件的名称
2)File encoding:csv文件编码
3)Variable Names(comma-delimited):
4)Delimiter(use “\t” for tab):csv文件中的分隔符(用”\t”代替tab键)
5)Allow quoted data?:是否允许数据内容加引号
6)Recycle on EOF?:
7)Stop thread on EOF?:
8)Sharing mode:共享模式
下面重点分析一下Allow quoted data和Sharing mode:
1、Allow quoted data?:是否允许带双引号的数据
2、Sharing mode:共享模式
(1)All threads:针对所有线程组的所有线程,每个线程取值不一样,依次取csv文件中的下一行。
下面举例说明:
A、设置线程组1、2、3分别为1并发、1次循环,且各线程组按顺序执行:
B、设置线程组1、2、3分别为1并发、2次循环,且各线程组按顺序执行:
C、设置线程组1、2、3分别为2并发、1次循环,且各线程组按顺序执行:
大家可以仔细比较一下上图和上上图的区别,乍一看貌似是一样的,但是实际却是不同的线程,怎么区分不同线程呢?
可以使用一个函数来判断:
${__BeanShell(ctx.getThread().getThreadName().toString())}
这个函数可以输出类似这样的内容:“线程组1 1-2“,前面是当前线程组的名称-线程组1,后面是线程组id,然后是线程id,现在再比较上面两图中,发现是线程id不一样。
总体来说就是,在All Threads模式下,并发数和循环数都会读取不同的csv数据,但是同一线程组内的多个sampler总是取相同的值。
(2)Current thread group:当前线程组,
取值情况是:以线程组为单位,每个线程组内的线程都会从第1行开始取值并依次往下进行取值。
举例如下:
A、设置线程组1、2均为2并发、1循环:
(3)Current thread:当前线程。
取值情况是:每个线程都会从第1行开始取值并依次往下进行取值,在同一次循环中所有的线程取值一样。
举例如下:
A、设置线程组1、2均为2并发、1循环:
上面两个图看起来好像是一样的呀?再仔细看一下,后面的test参数取值是不同的。
为什么不同呢?本来想认真的解释一番,但是组织了很久的语言,还是感觉没说清楚。
这一块的逻辑是“只可意会,不可言传”,必须要靠自己亲自实验,慢慢体会才行。
最后,给大家一个小作业:
如何通过设置Sharing moder的方法来实现多个sampler中的参数可以依次不重复的取同一个csv文件中的值?
end
----------
本文首发于本人原创公众号【媛测】(原名-玩转jmeter),专注分享性能、自动化测试等相关知识,寻找志同道合之士共同成长!扫码关注后分别回复jmeter、python、linux,领取个人总结资料。