zoukankan      html  css  js  c++  java
  • jmeter数据库查询与接口返回进行对比

      今天在群里又看到了一个小伙伴问类似的问题,【jmeter如何实现数据库查询出来的结果与接口返回的结果进行对比判断,或者数据库两字段的相加减与接口返回进行对比】。其实都一样,因为你把运算放在查询那里就行了,运算放beanshell脚本里面会影响性能。这事其实很简单,来理一下思路:

    1、从数据库中拿数据:用JDBC Request或beanshell后置处理器;

    2、从接口返回中拿数据:用正则表达式提取器;

    3、对比:用beanshell断言。

     ---------------------------------------------------------------------------------------------------------------------

    一、数据库查询

      添加一个【JDBC Connection Configuration】先连接上数据库(具体可看jmeter连接Mysql),然后添加【JDBC Request】写SQL语句查询出所需要的数据,如下图:

    若使用Beanshell PostProcess,可以这样写:

    Value = vars.getObject("Result_variable_name").get(0).get("margin"); //从查询结果中取出margin列的第一行值,第一行index从0开始算get(0)
    vars.put("result",Value);  //将取出的值赋给变量result

    二、接口返回

      从response中拿数据,使用正则表达式提取器,这里就不啰嗦了(可以看jmeter关联),直接放图,如下:

      上述两步完成之后,可以添加一个Debug Sampler或者其他方式看看取到的参数是否正确。如果和自己的预期有出入,那么仔细检查SQL,正则表达式等。

    三、Beanshell断言

      beanshell中的代码其实是很简单的,就是一个if...else,如图:

    if("${margin_1}".equals("${uid}")) //数据库的取值与接口正则取值比对
    {
        System.out.println("OK");
    }
    else
    { 
        System.out.println("fail");
    }

      数据库取到的值[margin_1]和接口返回的值[uid]进行对比,其中margin_1是指sql查询出来的第一个数据,具体用法请了解JDBC Request下面的参数,而${margin_1/uid}是jmeter调用动态参数值的方式。运行之后可以在jmeter的日志中看到结果,如下(我从数据库拿的是时间戳的相减值,接口是用户的uid,肯定是不相等的):

    -----------------------------------------------------------------分割线----------------------------------------------------------

      至此,就没了。这里只阐述了数据对比这个操作,至于成功/失败之后怎么操作,就不继续说下去了,场景很多嘛。农历年前在上海的最后一篇博客,明天就请假回家啦,各位明年见。

    ___是非功过有人心,善恶斤两问阎王

  • 相关阅读:
    获取远程服务器的资源情况
    【Hibernate】Hibernate系列8之管理session
    【Hibernate】Hibernate系列7之二级缓存
    【Hibernate】Hibernate系列6之HQL查询
    【Hibernate】Hibernate系列5之检索策略
    【Hibernate】Hibernate系列4之配置文件详解
    【Hibernate】Hibernate系列3之配置文件详解
    【Hibernate】Hibernate系列2之Session详解
    【Hibernate】Hibernate系列1之概述
    【云计算】Dockerfile、镜像、容器快速入门
  • 原文地址:https://www.cnblogs.com/zichuan/p/10338808.html
Copyright © 2011-2022 走看看