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

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

作者头像
顾翔
发布2021-12-01 20:15:32
5790
发布2021-12-01 20:15:32
举报
文章被收录于专栏:啄木鸟软件测试

7.4 断言 1 JSON断言 如果返回的结果是JSON格式,可以使用JSON断言元件进行断言。通过右键在弹出菜单中选择“添加->断言->JSON断言”。如图26所示。

图26 JSON断言

  • Assert JSON Path exists:需要断言的JSON表达式。
  • Additionally assert value:是否需要根据值去断言。
  • Match as regular expression:是否需要根据正则表达式去断言。
  • Expect Value:期望匹配的断言内容。
  • Expect null:是否期望是 null。
  • Invert assertion(will fail if above condition met):结果取反。

判断方式如下。

  • 如果响应结果不是JSON格式的,断言失败。
  • 如果JSON Path找不到元素,断言失败。
  • 如果JSON Path找到元素,没有设置条件,断言成功。
  • 如果JSON Path找到元素,但不符合条件,断言失败。
  • 如果 JSON Path找到元素,且符合条件,断言成功。
  • 如果 JSON Path返回的是一个数组,会迭代判断是否有元素符合条件,有则断言成功,否则断言失败。

8 总结 本章我们对查询商品、新旧2版的查看商品详情、添加购物车和查看购物车几个功能书写了测试脚本。通过学习添加购物车和查看购物车两个功能如何建立脚本,对于JMeter如何处理cookie有了进一步的认识。接下来我们学习了

  • 逻辑控制器:仅一次控制器。
  • 函数助手:random函数和CSVRead函数。
  • 后置处理器:CSS/JQuery提取器、JOSN提取器和JSON JMSPath提取器。
  • 断言:JSON断言。

共6个元件进行了学习。并且在最后比较了JOSN提取器和JSON JMSPath提取器2个提取器。

JMeter的二次开发

对于一些复杂的逻辑,使用JMeter自带的元件来搭建接口测试脚本可能就力不从心了。比如一个安全性较高的软件系统,所有数据在传输过程前,根据数据的特征,采用自定义的各种不同的加密手段后再进行传输。由于JMeter自身是一个开源软件,所以可以只通过二次开发来解决这个问题。 为了大家的学习方便,我们假设JMeter中没有函数助手mdash;mdash;digest函数。我们使用二次开发的方式自己来开发一个与digest等同的功能。我们仍旧以电子商务登录为例给大家进行介绍。 1 利用BeanShell调用外部jar文件 1)在Eclipse中建立项目,在包com.jerry下面建立java文件myDigest.java。

代码语言:javascript
复制
package com.jerry;


import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;



public class myDigest {

   public static String getSHA256StrJava(String str){

      MessageDigest messageDigest;

      String encodeStr = "";

      try {

       messageDigest = MessageDigest.getInstance("SHA-256");

       messageDigest.update(str.getBytes("UTF-8"));

       encodeStr = byte2Hex(messageDigest.digest());

       } catch (NoSuchAlgorithmException e) {

       e.printStackTrace();

       } catch (UnsupportedEncodingException e) {

       e.printStackTrace();

       }

       return encodeStr;

       }


    public static String byte2Hex(byte[] bytes){

       StringBuffer stringBuffer = new StringBuffer();

       String temp = null;

       for (int i=0;i<bytes.length;i++){

         temp = Integer.toHexString(bytes[i] & 0xFF);

         if (temp.length()==1){

         //1得到一位的进行补0操作

         stringBuffer.append("0");

         }

         stringBuffer.append(temp);

         }

         return stringBuffer.toString();

         }            

}

注意:这里的文件必须为static。 2)在Eclipse点击菜单“File->Export”。 3)选择java下面的JAR file。如图1所示。

图1 选择java下面的JAR file

4)点击【Next>】按键。

5)在下面的窗口中,选择刚才建立的java文件所在的项目,如图2所示。

图2 选择java文件所在的项目

6)点击【Finish】按键。 7)将建好的jar文件存入到:%JMETER_HOME%/ lib\ext目录下。 8)右击登录HTTP请求,在弹出菜单中选择“添加->前置处理器->BeanShell 预处理程序”。 9)修改名字:获取加密后的password,然后把下面代码写入Script中。

代码语言:javascript
复制
import com.jerry.myDigest;

String password = vars.get(&quot;pram_g1&quot;);
String username = vars.get(&quot;pram_g2&quot;);
String newpassword = myDigest.getSHA256StrJava(password);
vars.put(&quot;password_shell&quot;,newpassword);
vars.put(&quot;username_shell&quot;,username)

如图3所示。

图3 获取加密后的password

10)在商品列表HTTP请求中username的值改为username_shell;password的值改为password_shell。 11)运行测试脚本,观察参数username_shell和password_shell,并且保证运行结果正确。

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

本文分享自 微信公众号,前往查看

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

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

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