qq_37753189 2017-06-13 09:13 采纳率: 0%
浏览 3826

Jmeter中数据库返回的值如何全部运用到http请求中

连接数据库后返回多个name值,我想把这些值连续全部运用到请求中,如何解决?用正则表达式只会引用第一个值

  • 写回答

1条回答 默认 最新

  • 小楼一夜听春 2020-05-11 15:51
    关注

    1.添加 "JDBC Connection Configuration"里面用来配置一些数据库连接的信息

    2.添加一个“CSV Data Set Config”,用来在后续的JDBC请求中select语句中where条件参数化使用

    3.添加JDBC请求

    4.请求测试可以发现jdbc请求已经成果,并能在响应数据中看到返回的结果

    5.那么接下来的问题就来了,如果我的下一个请求,需要JDBC中的请求,那我该怎么得到JDBC中的响应数据呢?

    在JMETER中可以使用“正则表达式提取 器”来实现,那么怎么来实现呢,需要在jdbc请求后面添加一个后置的“正则表达式提取器”(表达式中的关键部分是 ([^"]+) ),添加的表达式如下

    6.为了验证是否能正确取得jdbc中的响应结果数据,模拟添加了一个简单的http请求

    7.http请求的“查看结果树”中可以看到成功的取得的user_id的信息

    多说几句,如果SQL语句写成 select 'user_id='|| '"' || user_id ||'"' from sys_user b where b.USER_ID='13707'的形式,则可以通过下面的正则表达式来取到user_id=后面的内容,正则表达式为:user_id=" (.+?)"

    总结:

    1.正则表达式看来是需要好好学习一下了;

    2.目前认为如果是取得jdbc的响应结果,是否通过beanshell来实现会更方便呢,可以自己写个java程序做个封装,来取得每次返回的结果。

    在JMeter中使用Mysql的CONCAT提取测试数据
    在测试过程中,有时候需要通过查询数据库来获得想要的数据信息,但是使用Jmeter的Jdbc请求查询出来的数据,

    使用正则表达式提取时,非常不方便,这个时候,可以使用一些函数,将查询结果转换为方便提取的格式,然后使用正则表达式提取。

    以下例子是使用Mysql的CONCAT函数

    1.select CONCAT('"name":',name,'') from test.user

    正则表达是:"name":(.*)

    2.select CONCAT('num=',count(1),'') from test.user

    正则表达是:num=(.*)

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据