• Jmeter---后置处理器 BeanShell PostProcessor 获取JDBC结果(多个返回结果)并以列表传入另一个请求


    之前用python+locust对脚本生成商品编码, 商品上架,购买商品进行编写脚本和压测;

    开始是打算用Jmeter,后来遇到问题在 Jmeter如何读取JDBC多行并组成列表,作为下一个请求 一直卡在这里,今天终于突破 记录一下:

    多方百度没有结果,最终经过过以为朋友指导,可以达成python脚本的效果;

    总结:

    虽然locust 没有向jmeter, LR等压测工具图表丰富,监听服务器情况等需要借助其他工作完成,在脚本灵活度上大大增加工作的效率;

    第一步:

    添加JDBC请求:详细参考另外一个博文

    1.1添加mysql 链接驱动 mysql-connector-java-5.1.47.jar

       

    在线程组 增加 JDBC Connection Configuration:

    在线程组 增加 JDBC Request:

     添加debug Sample和查看结果树,运行脚本,查debug sample运行情况,如下:

    在对于JDBC请求结果,发现同一个版本 也会出现不一样的情况,朋友结果是有些是有这个返回值gId_matchNr,而我的是没有

    重点:

    第二步:

    思路是:通过BeanShell PostProcessor拿到JDBC查询结果,组合成一个列表,作为参数传入下一个请求;

    vars.put() 接收是字符串,不接受其他类型

    列表因此需要用:varObject() 

    引用参数直接通过${goodId}

    5行:获取JDBC查询结果的“gId_#”的结果 即JDBC查询结果的总数,用于便利结果集

    6行:转换成int类型

    7行:通过log,可以在debug模式查过结果;

    8行:创建一个列表,用于查询结果存储;

    10行:遍历JDBC结果

    11行:因为JDBC查询结果是:gId_1 代表第一个值,gId_2 代表第二个值,如此类推

    12行:通过vars.get() 拿到每个值,“"” 对冒号进行转义

    14行:把拿到的每个商品号的值加入到列表里

    16行:通过vars.putObject(“goodId”, glist) 赋予到新的变量

    通过debug sample 查看到列表方式打印

    最后的最后:

    在上面脚本最后添加“log.info(glist)” 这行代码 出现下面报错信息,不知道怎么处理 有哪位朋友有解决方法吗?知道的大神 烦请留个言,谢谢

    2019-05-16 19:10:35,122 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval    Sourced file: inline evaluation of: ``  String tmp_id = vars.get("gId_#"); int num = Integer.parseInt(tmp_id); log.inf . . . '' : Error in method invocation: Method info( java.util.ArrayList ) not found in class'org.apache.logging.slf4j.Log4jLogger'
    2019-05-16 19:10:35,122 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval    Sourced file: inline evaluation of: ``  String tmp_id = vars.get("gId_#"); int num = Integer.parseInt(tmp_id); log.inf . . . '' : Error in method invocation: Method info( java.util.ArrayList ) not found in class'org.apache.logging.slf4j.Log4jLogger'
  • 相关阅读:
    Educational Codeforces Round 126 (Rated for Div. 2)
    Google Code Jam 2022 Qualification Round
    Codeforces Round #780 (Div. 3)
    AtCoder Beginner Contest 247
    AtCoder Beginner Contest 245
    Google Code Jam 2022 Round1A
    AtCoder Beginner Contest 245 Ex Product Modulo 2
    Codeforces Round #781 (Div. 2)
    EXSIVM使用模板创建虚拟机报错
    Hadoop单机/伪分布式配置安装教程
  • 原文地址:https://www.cnblogs.com/shoebill/p/10880909.html
Copyright © 2020-2023  润新知