一、什么是参数化

若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据。

参数化:是自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,如登录时利用GET/POST请求方式传递参数的场景,在脚本运行时指定参数的取值范围和规则。脚本在运行时,根据需要选取不同的参数值作为输入,该方式称为数据驱动测试(Data Driven Test),而参数的取值范围被称为数据池(Data Pool)。

二、什么情况下需要参数化

1. 该值有唯一性校验(应用层或是数据库层)

2. 数据库做了查询缓存,防止对结果产生影响

三、参数化的实现方式

1.  用户参数

2. CSV(使用较多的就是这个啦)

3. 用户定义的变量

4. 函数助手生成函数

四、CSV参数化

1. CSV配置项&功能:

Filename(文件名):参数化文件的读取位置,即保存参数化数据的文件目录。可为绝对路径,也可为相对路径。在分布式测试中,还是利用相对路径比较方便,因为有的机器可能安装路径不一样,同时可避免脚本迁移时需要修改路径
File Encoding(编码):编码格式
Variable Names(变量名称):变量名称。这里定义的变量名称,后面就可以直接用来引用了。(多个变量名称以逗号隔开,例如username,passwd。参数化文件中同样有对应的两列数据。)
Ignore first line(忽略首行):忽略第一行数据(类似LR中第一行数据是变量名称,如果你的配置文件中为了记忆第一行也是变量名,可以选择是忽略该行数据)
Delimiter(分隔符):Variable Names中的参数分隔符,默认为英文逗号
Allow quoted data?  (是否允许带双引号):是否允许引用数据,默认false。选项为“true”时对全角字符的处理可能会出现乱码
Recycle on EOF? (遇到文件结束符再次循环): 是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
Stop thread on EOF? (遇到文件结束符停止线程):  当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义
Sharing mode(共享模式):共享模式,即参数文件的作用域:All Threads;Current Thread Group;Current Thread
 
2. 共享模式
取值规则:
外层线程组:迭代层控制值的变更
循环控制器:内层循环不影响值的变更,与外层值一致
 
A.所有线程:

单用户:顺序取值,只随着最外的迭代次数变更取值,触发的变更条件是迭代
多用户:所有线程共用这一套csv取值,原则是取值不重复,除非值不够,取决于值不够是否再次循环的设置

B.当前线程组:

多个线程组,多个线程组都各自被分配一套csv去取值,但每个线程组里每个线程共用这一套csv去顺序取值

PS:多个线程组的使用场景:混合场景多个线程组跑,无执行顺序影响,都放在一个线程组里,会有执行顺序影响
 
C.当前线程:
线程1跟线程2都取同样的值,线程1跟线程2各自被分配一套csv去取值