正则表达式

jmeter关联与正则

本文主要是介绍jmeter关联与正则,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

关联

1、关联定义

将某一个请求返回结果的动态返回值,保存成一个变量,供后面需要用到该值的请求的使用

2、关联原因

服务器或者数据库校验该值的合法性

 

3、哪些值要关联

3.1 数据库交互(读写)

insert ---关联--建立关系的那几个字段--这条数据属于谁 谁操作的 啥时候干的(业务校验)

插入数据,一定会返回这条数据的ID

update

update table set x =? where xxid=?? and and

关联 where 后面的条件ID

delete

delete table set x =? where xxid=?? and and

select 。 。。。。

 

key . xxid . 或者 。 int==数字

 

关系型数据库,表与表之间,存在网状关系的

非关系型数据库,

INSERT INTO 表名称 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

 

 

 

3.2 非数据库

从哪儿找----上一步交互请求

典型使用场景:时间戳、验证码(图片、手机、邮箱) session token

特征: 奇奇怪怪

 

 

举例:淘宝购物流程

1.注册 ------参数化 手机号/邮箱 关联 验证码、token

2.登陆 ------参数化 手机号 关联

 

4、jmeter关联方式

前提:访问 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx

我们可以获取天气预报的web服务的接口,且没有加密。这些接口都是可以用的,以下场景举例。

4.1边界提取器

 

注:边界提取器与http请求,可以同目录,也可以在子目录。我们优先在子目录吧。

如下图,这都是可以的

 

在你要关联的请求下右键点击添加-后置处理器-正则表达式提取器

 

 

 

我这里描述一个使用场景

 

以下是 HTTP GET 请求和响应示例。所显示的占位符需替换为实际值。

 

GET /WebServices/WeatherWS.asmx/getRegionProvince? HTTP/1.1 Host: ws.webxml.com.cn

 

HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <ArrayOfString xmlns="http://WebXml.com.cn/"> <string>string</string> <string>string</string> </ArrayOfString>

 

返回结果:

 

<?xml version="1.0" encoding="utf-8"?>

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">

<string>黑龙江,3113</string>

<string>吉林,3114</string>

<string>辽宁,3115</string>

<string>内蒙古,3116</string>

<string>河北,3117</string>

<string>河南,3118</string>

<string>山东,3119</string>

<string>山西,31110</string>

<string>江苏,31111</string>

<string>安徽,31112</string>

<string>陕西,31113</string>

<string>宁夏,31114</string>

<string>甘肃,31115</string>

<string>青海,31116</string>

<string>湖北,31117</string>

<string>湖南,31118</string>

<string>浙江,31119</string>

<string>江西,31120</string>

<string>福建,31121</string>

<string>贵州,31122</string>

<string>四川,31123</string>

<string>广东,31124</string>

<string>广西,31125</string>

<string>云南,31126</string>

<string>海南,31127</string>

<string>新疆,31128</string>

<string>西藏,31129</string>

<string>台湾,31130</string>

<string>北京,311101</string>

<string>上海,311102</string>

<string>天津,311103</string>

<string>重庆,311104</string>

<string>香港,311201</string>

<string>澳门,311202</string>

<string>钓鱼岛,311203</string>

</ArrayOfString>

 

 

 

 

 

 

 

 

编辑边界提取器

case1,我们想提取重庆的城市id

配置如下图:

Apply to: Main sample only

要检查的响应字段 主体

引用名称: cityid

左边界: <string>重庆,

右边界: </string>

匹配数字(0代表随机)

缺省值

 

这里讲一下匹配数字和缺省值

匹配数字:当有多个结果时,0-随机取一个结果,1-取结果的列表的第一个,2-取结果列表的第2个,以此类推

缺省值:当娶不到结果时,给你变量返回一个默认值

 

为了验证我们的提取变量,正确,我们需要加一个【调试取样器】来调试一下我们的脚本

 

我们最终的脚本结构如下:

 

 

jmeter 调试取样器(Debug Sampler)

Debug Sampler

Debug Sampler主要用来看我们设置的变量,是否能正常取到我们设定的值

  JMeter properties和System properties这两个属性我们不用管,默认false即可,他是jmeter的一些自带属性,一般是不会变的,重点要看的是中间那个

  JMeter variables:jmeter中的变量,如果此项为ture,则此元件会打印出其范围内所有的jmeter变量的值,所以我们可以通过他把当前位置变量的值打印出来,从而进行程序的调试。

 

 添加完Debug Sampler,我们还要添加查看结果树,来查看具体的变量数据。

 

 

这里就看到了我们刚刚添加的变量

 

 

 

 

 

4.2正则表达式处理器

在你要关联的请求下右键点击添加-后置处理器-正则表达式提取器

调试脚本结构如下:

 

 

 

 

4、正则表达式

元字符

. 除了换行符之外的任意字符

\w

\d 匹配数字

 

限定符

* 重复零次或更多次(优先取更多)

+ 重复一次或者更多次(优先取更多)

? 重复零次或者一次

 

 

*"(贪婪) 重复零次或更多

例如"aaaaaaaa" 匹配字符串中所有的a 正则: "a*" 会出到所有的字符"a"

"+"(懒惰) 重复一次或更多次

例如"aaaaaaaa" 匹配字符串中所有的a 正则: "a+" 会取到字符中所有的a字 符, "a+"与"a*"不同在于"+"至少是一次而"*" 可以是0次,

"?"(占有) 重复零次或一次

例如"aaaaaaaa" 匹配字符串中的a 正则 : "a?" 只会匹配一次,也就是结果只是单个

字符a

"{n}" 重复n次

例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则: "a{3}" 结果就是取到3个a字

符 "aaa";

"{n,m}" 重复n到m次

例如正则 "a{3,4}" 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以

是四个"aaaa" 正则都可以匹配到

"{n,}" 重复n次或更多次

与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至 少要重复3次

 

 

"*?" 重复任意次,但尽可能少重复

如 "acbacb" 正则 "a.*?b" 只会取到第一个"acb" 原本可以全部取到

但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是

"acb"

"+?" 重复1次或更多次,但尽可能少重复

与上面一样,只是至少要重复1次

"??" 重复0次或1次,但尽可能少重复

如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

"{n,m}?" 重复n到m次,但尽可能少重复

如 "aaaaaaaa" 正则 "a{0,m}" 因为最少是0次所以取到结果为空

"{n,}?" 重复n次以上,但尽可能少重复

如 "aaaaaaa" 正则 "a{1,}" 最少是1次所以取到结果为 "a"

 

这篇关于jmeter关联与正则的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!