前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过案例带你轻松玩转JMeter连载(19)

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

作者头像
顾翔
发布2021-11-02 17:35:15
4680
发布2021-11-02 17:35:15
举报

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

图15 获得商品列表信息

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

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

图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进行设置。

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

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

运行后没有发生异常。对于响应断言将在第5.3-1节中进行详细介绍。 2 使用BeanShell断言 1)右键点击商品列表HTTP请求,选择“添加->断言->BeanShell断言”。按照图18书写断言代码。

图18 商品列表BeanShell断言

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

代码语言:javascript
复制
//获取系统变量
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文件如下形式。

代码语言:javascript
复制
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所示。

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

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

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

图20 XML断言

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

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

图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进行设置。

图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。

《迎孟晚舟归》

孟女长我仅四月,在外孤辱千余日。

今夜加国归华来,举国沸腾迎木兰。

中华之国欲崛起,教育科学须更强。

纳入世界民林首,吾辈更须再努力。

九九六来诚可贵,头脑四肢肉身躯。

科学治企把脑动,事半功倍显神威。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档