1、手动写入
所有可以固定的参数,我们都可以通过手动写入的方式。例如:HTTP信息头管理器中的Content-Type的值是application/json,通过手动写入的方式来获得数据。
2、添加用户自定义变量
3、读取文件
CSV Data Set Config可以从指定文件中读取数据,filename即文件路径,Variable Names即做为变量名。如果有多列就写多个,逗号隔开。
4、从数据库中读取
连接数据库:
执行sql,获取数据:
5、正则表达式提取器 【括号里面的表示要提取的内容】
正则表达式:用于将需要的数据提取出来。模板: 表示要提取第几个值,$1$,1表示第一个,$2$,2表示第二个。匹配数据: 0表示随机,1表示全部。缺省值:匹配不到的默认值。
“sn”:”(.*?)” #非贪婪模式(含有?),贪婪模式(不含?)
贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。
eg:
{“error”:0,”sn”:”F11215456251923190″,”redirect”:”\/index.php?r=hot%2Forder%2Fpayment&sn=F11215456251923190″}
“sn”:”(.*)” ,贪婪模式得到的结果:F11215456251923190″,”redirect”:”\/index.php?r=hot%2Forder%2Fpayment&sn=F11215456251923190″
“sn”:”(.*?)” ,非贪婪模式得到的结果:F11215456251923190
进阶匹配问题
1)如何获取数组结果?
如果有多个匹配的结果,则获取到的是个数组,此时若要提取其中的内容,调用方式为${ bizSeqNo _1},$…,如果想要得到匹配出的结果的个数,用$,如果想随机选取一个,只需要将匹配数字设为0,使用$调用即可。
2)如何获取唯一的匹配结果?
如果想要避免上面获取多种结果的情况,则需要注意把正则表达式写成非贪婪模式,或者增加正则表达式的前后边界,使结果唯一匹配既可。
6、json提取器
Names of created variables,写入变量名,多个变量名用英文分号分隔。JSON Path中写入json的格式,多个格式用英文分号分隔,例如:$.data.id,
返回信息是json格式
7、Xpath提取器
使用场景:仅适用于返回数据为html格式的数据
Xpath语法:
//a[@class=”postTitle2″]/text()
另外表达式://a[@class=”postTitle2″],去掉/text()也是可以的,大家可以自己试试
//*[@class=’postTitle2′]/@href 从根目录下定位所有class=postTitle2的href值
//*[@class=’postTitle2′] 从根目录下定位所有class=postTitle2标签内的文本
//a[contains(@class,’postTitle2′)] 从根目录下a标签的class值中包含postTitle2的节点
substring-before(.//*[@class=’postTitle2′]/text(),’基础’) 返回根目录下[@class=’postTitle2′]/text()中第一个’基础’前面的部分,如果不存在’基础’,则返回空值
XML Parsing Options
:要解析的XML参数
Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中;
Quiet表示只显示需要的HTML页面,Report errors表示显示响应报错,Show warnings表示显示警告;
Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;
Validate XML:根据页面元素模式进行检查解析;
Ignore Whitespace:忽略空白内容;
Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;
8、使用随机数和计数器
在配置元件中的随机变量和计数器,非常好用。随机变量控件中,输入最大和最小值,变量名称和输出格式。计数器空间中,输入最大和最小值,递增频率和引用名称
9、用时间戳做为变量
有时候随机数可能不能满足我们对于参数的要求,我们可以采用时间戳+随机数的方式,大大减低数据重复的可能性。
${__time(,)} : 默认该公式精确到毫秒级别, 13位数
10、返回值存入文件再使用
前面我们说了采用正则表达式提取器和json提取器来传递参数,能满足我们大部分场景,当使用场景如下时就会显得不那么好用了:在压力测试时,我们需要每个用户都是登录情况下操作。如果我们在前面调用登录接口,势必大大影响整个系统的处理能力,这样不能能客观得到接口的性能。
我们可以采用如下处理方式,在setUp线程组中批量注册或者登陆一批用户(当然总数是够跑一次测试的),把他们的登录信息存入一个文档。在主线程组中再把他们从文件中读取处理,放入headers中,执行下单请求测试。