jmeter 怎么进行接口关联的?
回答·12
最热
最新
- 接口关联应该是上一个接口的返回结果给予下一个接口使用。jmeter 工具提供了很多种方式,比如 json 提取器、正则表达式提取器、xpath 提取器以及 beanshell 数据处理、jdbc 请求等等。提取的数据可以赋值给 jmeter 变量,通过${}就可以使用。 在设计用例时做好相关的逻辑处理,保证接口顺利进行。
- 以登录为案例,登录成功后返回的 TOKEN 是动态参数,在访问下个 API 的时候需要带上这个 TOKEN,那么处理的思路具体就是: 登录成功后,在登录接口的后置处理中添加 JSON 提取器(或者是正则表达式提取器),在 JSON 提取器中定义变量,变量的值就是登录成功后的 TOKEN 在下个 API 中使用${变量}来调用动态参数 执行后,就能够在 JMeter 测试工具中实现 API 的动态参数的关联
- 一、前言 在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。 关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用。 二、使用正则表达式提取器实现接口关联 正则表达式提取器,见名知意就是使用正则表达式的方法把我们需要提取的内容通配出来。 原理:通过左右二边不变的边界来提取中间变的返回值 需要提取 access_token {"access_token":"31_qz2HtPalsk5Ey1ToWJaZ6Kaojf8y-BhxTHEmuO111m8_Gc_77HRvMuG4ltbd9gHskqi0XAq8phQys9K8awso4iq-VSr0bArrd-zC-nY0Ltudp-HcPZV7y291YjLYoeJBHW2zhB7-lWYzeTsqFKOhAHANSW","expires_in":7200} 1、在需要获得数据的请求“1.获取 access_token” 上右击添加一个后置处理器-->正则表达式提取器 引用名称:即下一个请求要引用的参数名称,如填写 access_token,则可用${ access_token}引用它。 正则表达式:()括起来的部分就是要提取的。.代表任意字符,+表示一次或多次,*代表出现任意次。 模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$,$3$等等,表示解析到的第几个值给 access_token。本处只有 1 个,所有使用$1$。 匹配数字:0 代表随机,-1 代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。 2.在后面的接口中使用${ access_token}引用  3.使用调试取样器检查是否提取成功 添加调试取样器-->运行测试-->通过查看结果树里面的 调试取样器 查看结果  如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。 三、使用 json 提取器实现接口关联 使用场合:接口关联,当前一个接口返回的数据类型为 json 格式的数据,需要从返回的 json 数据中提取数据。 可以将返回的值复制到 www.bejson.com-->json 菜单-->json 视图-->json 数据中,然后点击试图查看 json 提取器的使用步骤 1.在需要获得数据的请求“1.获取 access_token” 上右击添加一个后置处理器-->JSON 提取器 Name of created varialies:即下一个请求要引用的参数名称,如填写 access_token,则可用${ access_token}引用它。 JSON Path expressions:填写 jsonpath,格式:$. 节点名称 根节点用 “.” 表示 Match Numbers:0 代表随机,-1 代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。 Default Values:找不到时默认值,一般设置为 NOT FOUND Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL” 替换变量为$(变量名)然后使用 调试取样器 检查是否提取到了 JSON 提取器配置: $.tag.name
- 要提取的请求下添加正则表达式,选择提取位置,默认主体,定义变量名、截取内容包含左边界、右边界,内容用括号代替,括号里填写.*? 模板填写$1$,数字写 1,代表提取第一个筛选出的内容,下一个请求调用用${变量名}。
- 用正则提取器或者是 json,提取内容,赋值变量,下面接口调用,作为参数
- 接口关联涉及到多个接口上下有依赖的场景时,使用关联,jmeter 是可以实现的。这里需要掌握的 jmeter 得知识点是:后置处理器中的提取器、跨线程全局变量的设置。 不同的业务的接口可以设置到独立的线程里面,接口中需要提取接口返回参数时可以使用后置处理器中的 json 提取器或正则表达式提取器或边界提取器等,选择一个即可,需要作为全局变量的话,需要添加一个 Beanshell 取样器,通过函数_setproperty()。 设置全局变量:_setproperty() 获取全局变量参数:_property()或_P()作用一样使用哪个都行。 另外,需要注意的是如果接口关联性比较强,需要设置一下执行顺序为按照创建的先后顺序执行,常用于流程自动化。 总结一下关联的知识点: 1.后置处理器中的提取器方法 2.添加 Beanshell 取样器,设置全局变量 setproperty(),设置完成把函数表达式放到 beanshell 取样器脚本中,获取全局变量值使用_P()函数或_property()函数 以上步骤就可以实现关联了,不会的可以找我单独沟通。
- 线程组内可以使用 xpath 提取器或正则提取器,跨线程组可以使用函数助手和 beanshell 来设置全局变量
- 在接口里面添加一个正则表达式,就可以关联调用上一个接口
- 1.beanshell,可以跨线程组,随便你关联 2.后置各种提取器(一般是 json 提取,正则表达式提取),弄成局部变量,就可以在后面的接口进行关联了。
- 正则表达式组件是最简单方便的,直接百度就可以了,就几个参数都会告诉的明明白白