通过案例带你轻松玩转JMeter连载(19)

简介: 通过案例带你轻松玩转JMeter连载(19)

5.3.2 商品列表断言



1 使用响应断言


1)右键点击商品列表HTTP请求,选择“添加->后置处理器->正则表达式提取器”。按照图15进行设置。


image.png

图15 获得商品列表信息


  • 修改名称为:获得商品列表信息。
  • 引用名称为:name。
  • 正则表达式为:<td ;(.*?)<td>。获取name的table信息。
  • 模板为:1,表示正则表达式中有1个参数。
  • 匹配数字为:-1。获得所有匹配。(在这里与边界提取器一样,1表示第1个匹配项;2表示第2个匹配项;…;n表示第n个匹配项;0表示随机由JMeter分配一个匹配项;负数表示获得所有的匹配项)。
  • 缺省值为:null。


运行,在查看结果的取样器中可以获得所有的匹配参数,如图16所示。


image.png

图16 匹配到的所有商品列表信息


  • 由于获得的多条信息,所以name为null。
  • name_1:第1条记录匹配到的字符串为:“正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼”。
  • name_1_g:第1条记录匹配到参数个数,为1个。
  • name_1_g0:正则表达式,对应部分用name_1替换,结果为:“<td >正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼<td>”。
  • name_1_g1同name_1,第1条记录匹配到的字符串:“正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼”。
  • name_2...、name_3...、name_4...和name_5...分别为第2、3、4、5匹配到的字符串响应得值。
  • name_matchNr=5:表示总共匹配到的个数为5。


2)右键点击商品列表HTTP请求,选择“添加->断言->响应断言”。按照图17进行设置。


image.png

图17 商品列表信息响应断言


  • 名称改为:商品列表信息响应断言。
  • Apply to:在JMeter Variable Name to use:name_matchNr。
  • 添加匹配规则为“字符串”,内容为:5。

运行后没有发生异常。对于响应断言将在第5.3-1节中进行详细介绍。


2 使用BeanShell断言


1)右键点击商品列表HTTP请求,选择“添加->断言->BeanShell断言”。按照图18书写断言代码。


image.png

图18 商品列表BeanShell断言


2)修改名称:商品列表BeanShell断言,然后在脚本中输入如下代码。


//获取系统变量
String name1 = vars.get("name_1");
String name2 = vars.get("name_2");
String name3 = vars.get("name_3");
String name4 = vars.get("name_4");
String name5 = vars.get("name_5");
String name_matchNr = vars.get("name_matchNr");
//判断返回值是否和预期一致
Failure = false;
if (! name1.equals("正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼")){
Failure = true;
FailureMessage = "name1信息与预期不符合";
}else if(! name2.equals("红茶茶叶 正山小种武夷山红茶170g 春茶袋装170g散装新茶")){
Failure = true;
FailureMessage = "name2信息与预期不符合";
}else if(! name3.equals("晋袍 花蜜香正山小种红茶 300g牛皮纸袋装礼盒 武夷山桐木关包邮")){
Failure = true;
FailureMessage = &quot; name3信息与预期不符合&quot;;
}else if(! name4.equals("正山小种红茶特级 新茶 礼盒装 桂圆香 送礼红茶暖养胃茶叶250g")){
Failure = true;
FailureMessage = "name4信息与预期不符合";
}else if(! name5.equals("2016春茶 武夷红茶 桐木关 野生红茶 正山小种 包邮 办公室用茶")){
Failure = true;
FailureMessage = "name5信息与预期不符合";
}else if(!name_matchNr.equals("5")){
Failure = true;
ailureMessage = "name_matchNr信息与预期不符合";
}


运行后没有发生异常。由此可见BeanShall断言虽然掌握起来有一定难度,但是它的功能更强大的。对于BeanShell断言将在第5.3-2节中进行详细介绍。


注意:在正常的工作中,使用响应断言和BeanShell断言二者选其一即可,不需要全上。但是我个人觉得在这里建议使用BeanShell断言。


3.3 新版本商品列表
在新的版本中,仅从服务器端下载XML文件,然后通过HTML文件的解析,这个XML文件如下形式。

CATALOG>
<GOOD>
<ID>1</ID>
<NAME>正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼</NAME>
<PRICE>¥238.0</PRICE>
</GOOD>
<GOOD>
<ID>2</ID>
<NAME>红茶茶叶 正山小种武夷山红茶170g 春茶袋装170g散装新茶</NAME>
<PRICE>¥25.0</PRICE>
</GOOD>
<GOOD>
<ID>3</ID>
<NAME>晋袍 花蜜香正山小种红茶 300g牛皮纸袋装礼盒 武夷山桐木关包邮</NAME>
<PRICE>¥188.0 </PRICE>
<GOOD>
<GOOD>
<ID>4</ID>
<NAME>正山小种红茶特级 新茶 礼盒装 桂圆香 送礼红茶暖养胃茶叶250g</NAME>
<PRICE>¥238.12</PRICE>
</GOOD>
<GOOD>
<ID&>5</ID>
<NAME>2016春茶 武夷红茶 桐木关 野生红茶 正山小种 包邮 办公室用茶</NAME>
<PRICE>¥68.0</PRICE>
</GOOD>
</CATALOG>


我们把它存储在Tomcat中,请求地址为:http://127.0.0.1:8080/sec/48/goods.xml


1)建立HTTP请求。如图19所示。

image.png

图19 新版本商品列表HTTP请求


  • 名称:商品列表(new)。
  • HTTP请求:GET。
  • 路径:/sec/48/goods.xml。

自动重定向。


2)右击商品列表HTTP请求(new),选择“添加->断言->XML断言”。按照图20进行设置。

image.png

图20 XML断言


XML断言,仅仅确保XML格式是否正确。


3)右击商品列表HTTP请求(new),选择“添加->断言->XPath断言”。按照图21进行设置。


image.png

图21 商品列表(new)XPath断言


  • 修改名称:商品列表(new)XPath断言。
  • Apply to:Main sample only。
  • XPath://PRICE[text()="¥238.12"]。(存在<PRICE>¥238.12</PRICE>)。


最后点击【验证】按键,确保XPath格式输入正确。我们在第5.8节中介绍XPath断言。


4)现在XPath出现了2.0版本。所以我们也可以使用XPath2 Assertion来进行断言。右击商品列表HTTP请求(new),选择“添加->断言->XPath2 Assertion”。按照图22进行设置。


image.png

图22  商品列表(new) XPath2 Assertion


  • 修改名称:商品列表(new) XPath2 Assertion。
  • Apply to:Main sample only。
  • XPath://PRICE[text()='¥68.0']。(存在<PRICE>¥68.0</PRICE>)。

最后点击【Validate xpath expression】按键,确保XPath格式输入正确。我们在第5.9节中介绍XPath2 Assertion。


image.png

                                                          点击查看原视频链接

目录
相关文章
|
Java 测试技术 API
通过案例带你轻松玩转JMeter连载(49)
通过案例带你轻松玩转JMeter连载(49)
250 1
通过案例带你轻松玩转JMeter连载(49)
|
存储 Linux
通过案例带你轻松玩转JMeter连载(60)
通过案例带你轻松玩转JMeter连载(60)
179 0
通过案例带你轻松玩转JMeter连载(60)
|
算法
通过案例带你轻松玩转JMeter连载(59)
通过案例带你轻松玩转JMeter连载(59)
232 0
通过案例带你轻松玩转JMeter连载(59)
|
XML JavaScript Java
通过案例带你轻松玩转JMeter连载(58)
通过案例带你轻松玩转JMeter连载(58)
128 0
通过案例带你轻松玩转JMeter连载(58)
通过案例带你轻松玩转JMeter连载(57)
通过案例带你轻松玩转JMeter连载(57)
128 0
通过案例带你轻松玩转JMeter连载(57)
|
存储 索引
通过案例带你轻松玩转JMeter连载(56)
通过案例带你轻松玩转JMeter连载(56)
117 0
通过案例带你轻松玩转JMeter连载(56)
|
存储 Prometheus 监控
通过案例带你轻松玩转JMeter连载(55)
通过案例带你轻松玩转JMeter连载(55)
165 0
通过案例带你轻松玩转JMeter连载(55)
|
存储 监控 数据可视化
通过案例带你轻松玩转JMeter连载(54)
通过案例带你轻松玩转JMeter连载(54)
157 0
通过案例带你轻松玩转JMeter连载(54)
|
存储 Prometheus 监控
通过案例带你轻松玩转JMeter连载(53)
通过案例带你轻松玩转JMeter连载(53)
137 0
通过案例带你轻松玩转JMeter连载(53)
|
JSON 监控 数据可视化
通过案例带你轻松玩转JMeter连载(52)
通过案例带你轻松玩转JMeter连载(52)
199 0
通过案例带你轻松玩转JMeter连载(52)