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

    在测试过程中,经常会有以下几种场景,如A接口的返回值,用于B接口中,而且A登陆的账户,每次登陆,这个sid值还是变化的。那么在实际工作中,如何才能A接口中提取参数到B接口中?接下来我们就可以用正则表达式来解决这个问题。

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

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

    说明:

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

    (2)正则表达式:

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

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

    (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

    (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 代表全部取值

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

    3、添加一个Debug Sampler ,

    4、执行完,结果如下:

    备注:正则表达式提取的结果保存在result中,

    result_g0 :根据匹配规则所匹配的全部内容 ;

    result_g1:根据匹配规则匹配出符合条件的内容;

    4、随后接下即可使用提取的数据,用法${result}

    更多技术请关注微信公众号:程序员技术前沿
  • 相关阅读:
    Python之路【第十六篇】:冒泡排序、斐波那契数列、用户登陆程序
    Python之路【第十五篇】:文件操作
    Python之路【第十四篇】:Python的内置函数
    Python之路【第十三篇】:isinstance()函数与lambda表达式及函数参数的传递方式
    Python之路【第十二篇】:函数
    Python之路【第十一篇】:三目运算、不同数据类型的存储方式及深浅拷贝(copy模块)、列表推导式
    Python之路【第十篇】:索引与切片的不同
    Python之路【第九篇】:字符串与字节的相互转换以及2.7与3输出方式的不同
    Python之路【第八篇】:enumerate、range与xrange
    scala学习之类和对象
  • 原文地址:https://www.cnblogs.com/tiechui2015/p/8922382.html
Copyright © 2011-2022 走看看