_StringFromFile函数

1.功能:这个函数是从一个文件中取到一个字符串,用来实现参数化,如果读取或者打开这个文件发生错误时,将会返回“**ERR** ”字符串。这对于需要大量可变数据的测试很有用,这个函数和LoadRunner中的File变量差不多,不过LoadRunner可以直接从数据库中查询记录,自动生成文件,而Jmeter需要我们借助第三方工具生成文本作用:可以用来实现参数化http请求发送的参数,使得在Jmeter运行时参数化了的参数在每个线程读取不同的内容。如果某个参数每次发送请求的时候不能重复才可以存储到数据库中,则用这个功能十分方便。

2.使用:

  1.首先需要一个文本文件,可以手工生成,也可以通过数据库查询工具查出结果,然后拷贝到一个文本文件中。

  2.点击Jmeter选项,选择函数助手对话框(或者使用快捷键“CtrlF”),在选择一个功能的下拉框中选择“_StringFromFile”

  3.设置“_StringFromFile”函数的值,具体如下:

    输入文件的全路径:输入前面生成的文件的完整路径,即文件路径+文件名.扩展名(文件路径可以写成相对路径或绝对路径,默认读取位置为/bin下,以防出错,最好填写绝对路径

    函数名称:输入某个名称,用于存储在测试计划中其他的方式使用的值,只是用来存储变量的名称,不可以${名称}使用

    文件开始结束序号:第三个参数是文件开始的序号,也就是文件读取的其起始行数。第四个参数是文件的结束序号,也就是要读取文件的最后行。

4.注意:该函数每次读取文件中的一行,如果线程组中有多个线程,则每个线程顺序读取一行,如果有多次循环,则每次循环顺序读取一行。

Egg:

_StringFromFile函数_第1张图片

如果目录下面有test2.dattest3.dattest4.dat,则按顺序读取这三个文件中的每行值,其中初始序列号表示文件后面的开始序号,如果有test1.dat文件将不会被读取,结束序列号类推(至于为什么会有这个看起来似乎是多余的功能,而不是直接全部写到一个文件里,猜想有可能是在数据过多的时候,避免一个文件太大或者是他们的习惯?)。

另外使用的时候,我循环了10次,但是这三个文件我只设置了9行值,结果点击运行,显示只执行了9次,而不会循环从第一个文件中读取。

当然,如果你就只是想读取一个文件,直接在【输入文件的全路径】后面输入文件的路径即可,其余三个值不用填写,点击生成即可一样调用

如果希望让文件执行多次,可以按如下配置:

_StringFromFile函数_第2张图片

${_StringFromFile(E:\jmeter\stringfromfile.dat,test,,)};

log.info("${test}");

当线程组大于(文件行数*4)时,将只会执行(文件行数*4)次,而不会循环读取执行所有的设定线程组数,没有指定读取次数,则默认会循环读取数据


你可能感兴趣的:(_StringFromFile函数)