zoukankan      html  css  js  c++  java
  • jmeter正则表达式书写

     

    在测试过程中,经常会有以下几种场景,如A接口的返回值,用于B接口中,而且A登陆的账户,每次登陆,这个sid值还是变化的。

    那么在实际工作中,如何才能A接口中提取参数到B接口中?接下来我们就可以用正则表达式来解决这个问题。

    场景如下,一个登陆接口,登陆后要使用该账号去购买标,买标的时候要使用A的登陆信息值。通过接口抓包,我们分析返回值如下:

    我们知道要提取的值巍sid。接下来我们就简单说明正则表达式的使用方法:

    说明:

    (1)引用名称:下一个请求要引用的参数名称,如填写Atask,则可用${Atask}引用它。

    (2)正则表达式:

        ():括起来的部分就是要提取的。

        .:匹配任何字符串。
        +:一次或多次。
        ?:不要太贪婪,在找到第一个匹配项后停止。

    (3)模板:

    表示使用提取到的第几个值:
    $-1$:表示取所有值
    $0$:表示随机取值
    $1$:表示取第1个
    $2$:表示取第二个
    以此类推:$n$:表示取第n个

    (4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0

    (5)缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error。

    还有一种方法,可以判断我们的正则表达式有没有错误。

    工具名称:RegexTester ,下载地址:百度,很多。

    使用方法截图:

    jmeter中使用如下:

    补充例子:

    案列:

    通过jmeter发送一个Http请求后,如何来获取响应结果内容值?

    常见场景一:比如说发送一个投标的请求,返回是一串JSON串,因想判断响应结果是否正确,所以可以通过获取result的值(因result =1 时,说明投标成功),其中响应结果格式如下:{"errorMsg":null,"result":1,"data":{"result":"2","msg":"投标成功!"}},或者判断msg内容也可。

    常见场景二:

    有A、B两个接口,其中B接口的输入参数来源于A接口的响应结果,此时也需要提取到A接口的响应字段值

    言归正传,如何获取呢?通常可以使用“正则表达式提取器”、Beanshell PostProcessor等来进行,在此使用的是正则表达式来进行提取,

    1、新增一个Http请求,设置如下:

    2、在该Http请求下,添加一个正则表达式提取器,具体设置如下图所示:

    名词解释:

    Apply to:应用范围

    要检查的响应字段:样本数据源

    引用名称:其他地方引用时的变量名称,引用方法:${引用名称}

    正则表达式:数据提取器

    • .  匹配任何字符

    • +   一次或更多次

    • ?    停止在第一个匹配成功时

    模板:表示使用提取到的第几个值:
    $-1$:表示取所有值
    $0$:表示随机取值
    $1$:表示取第1个
    $2$:表示取第二个
    以此类推:$n$:表示取第n个

     

    匹配数字:0 代表随机取值,1 代表全部取值

    缺省值:如果正则表达式没有搜找到值,则使用此缺省值

  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/fanjc/p/12030035.html
Copyright © 2011-2022 走看看