首页 > 其他分享 >第九节 JMeter基础-高级登录【接口关联-鉴权】

第九节 JMeter基础-高级登录【接口关联-鉴权】

时间:2024-07-19 21:19:48浏览次数:6  
标签:HTTP 登录 第九节 token 购物车 JSON 提取 JMeter 鉴权

声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。

 

背景:电商的功能:登录、加入购物车、提交订单。问题:谁把什么商品加入了购物车?这时需要把上一个接口的响应数据(登录成功后返回响应数据token值),作为下一个接口的请求数据(加入购物车时token值作为请求数据),这操作JMeter称之为【接口关联】。

思路

1、登录成功后,得到用户标识--token值

2、加入购物车--用token值来区分是谁操作;

3、运行后查看结果树。

 

1.认识JMeter

(1)后置处理器【JSON提取器】

  JSON提取器是为了提取某个字段的值。这里是为了提取登录成功后,响应数据返回的token值。

(2)配置元件【HTTP信息头管理器】

  主要修改请求头中content-type的类型,JMeter默认是表单类型。

 

2.【HTTP请求默认值】

  养成习惯,把多个接口访问同一个服务器地址提取出来,设置http请求默认值。

 

3. HTTP请求【登录】

(1)设置【HTTP请求】

(2)设置【JSON断言】

 

4. 【JSON提取器】

  在【登录】层级下添加【JSON提取器】。因为token具有时效性,每次登录后token都不一样,所以它并不是固定写死的。这里通过【JSON提取器】获取到token的值,传参给下一个【加入购物车】接口。

(1)新建【JSON提取器】

【右击】【添加】【后置处理器】【JSON提取器】

(2)设置【JSON提取器】

① Names of created variables:必传,接收提取值的变量名,多个变量用;分隔。给个名“login_token”,后面【加入购物车】时传参需要用到。

② JSON Path expression:必传,用来提取某个值,多个表达式用;分隔。表达式:$.data.token或者$..token(这个比较灵活)。

③ Match No.(0 for Random):非必传,取第几个值,多个值用;分隔。0:随机,默认;-1:所有;1:第一个值。这里可以为空或者填0。

 

5. HTTP请求【加入购物车】

(1)设置【HTTP请求】

① 名称:加入购物车。

② 请求方法:选择POST。

③ 路径:?s=api/cart/save&application=app&application_client_type=weixin&token=${login_token}。这里先是参数s的值修改加入购物车的请求URL,其次再添加token的参数(接口文档写明了“token默认使用GET传递”),所以这里路径需要添加参数token。前面【登录】时已获取到token的值,所以这里直接${login_token}引用获取。

④ 参数:接口文档中参数JSON形式,这里参数选择【消息体数据】(加之参数太多,一个个添加太麻烦),数据如下:

{
    "goods_id": "2",
    "spec": [
        {
            "type": "套餐",
            "value": "套餐二"
        },
        {
            "type": "颜色",
            "value": "银色"
        },
        {
            "type": "容量",
            "value": "64G"
        }
    ],
    "stock": "5"
}

  注意:::“消息体数据”是JSON格式的,这里一定要注意格式没有问题!!!

  如果是手动敲入的一般不会存在格式问题(数据少量时)。如果(数据较多)需要复制粘贴的一定要注意格式问题,最好是在文本编译器里过一遍(例如记事本、notepad++等)。

  JMeter工具也有格式校验功能,只是如果不熟悉的人很可能忽视。之前操作时有格式问题,JMeter工具在"goods_id":"2" 这一行的最前面显示一块红色。只是第一次用工具不熟悉,不清楚红色表示格式有误,导致执行结果树有报错,一直找不到原因。后来又从头到尾操作一遍,数据手动敲入的,执行结果就没问题了。才知晓是格式问题导致执行失败!!!自己找了将近3个小时的原因,才找到原因。

  补充知识:"goods_id":"2",商品id获取的方式一:通过数据库表【商品表】sxo_goods直接查看id字段值。方式二:通过登录商城后点击商品信息,进入商品信息页面,url中最后的参数就是id.html。

(2)设置【JSON断言】

 

6.【HTTP信息头管理器】

  JMeter工具HTTP请求的请求头Content-Type属性的值默认是表单类型,而【加入购物车】接口的参数是【消息体数据】,是JSON格式,所以要在【注册】层级下新增【HTTP信息头管理器】。

(1)新建【HTTP消息头管理器】

【右击】【添加】【配置元件】【HTTP信息头管理器】

(2)设置【HTTP消息头管理器】

① 添加名称:content-type,值:application/json

 

7.调试取样器

 

8.查看结果树

(1)【加入购物车】:失败原因:token鉴权原因、参数JSON格式有误。

(3)【调试取样器】:排错:排到参数的用户名跟登录商城的用户名不一致。

标签:HTTP,登录,第九节,token,购物车,JSON,提取,JMeter,鉴权
From: https://www.cnblogs.com/duguxiangyao/p/18312267

相关文章

  • 第八节 JMeter基础-高级登录【数据库数据驱动】
    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。背景:获取数据库用户表中的数据进行登录接口测试。思路:引用jar包【测试计划】。设置数据库的连接信息,取变量名db1--数据源【配置元件】。数据取样器引用数据源,填写查询sql,定义用户名密码变量名【取样器】......
  • 【接口】接口+jmeter测试问题汇总
    【问题一】接口返回405【时间】2024/7/19【解决】HTTP405错误(MethodNotAllowed)表示客户端尝试使用了服务器不支持的方法来访问资源【问题二】给所有接口设置统一的域名?【时间】2024/7/19【解决】添加HTTP请求默认值,只能配置除请求头之外的数据【问题三】http的请求默......
  • 第四节 JMeter基础-初级登录【固定用户登录】
    声明:本文所记录的仅本次接口测试所用到的知识点。1.认识JMeter(1)测试计划:测试的起点,所有组件的容器。相当于一个测试项目,对测试计划展开一系列的操作。(2)线程组:一定数量的用户。  ①线程数:1。默认为1,表示一个用户。  ②Ramp-UP时间:1。默认是1秒,表示启动线程的时间。在n秒......
  • 使用jmeter自带录制插件录制请求
    所需工具jmeter软件浏览器/移动端代理服务器相关字段解释一、globalsettingport(端口)        随便设置即可,但是注意不要和电脑上的其他端口冲突        httpsdomains        一般设置为当前电脑的本地IP地址,可不填写;不填写默认为localhost......
  • 第三节 JMeter安装及配置
    1.官网地址下载(1)JDK:https://www.oracle.com/cn/java/technologies/downloads/,下载1.8版本以上的,最好下载最新版本(本次下载本次下载了jdk-22)。(2)JMeter:https://jmeter.apache.org/,下载最新版本即可(本次下载了apache-jmeter-5.6.3)。2.环境变量配置(1)JDK安装及配置:  ①安装:可安装......
  • 学之思系统测试报告(接口测试postman+性能测试jmeter+自动化测试selenium)
    学之思系统测试报告(接口测试postman+性能测试jmeter+自动化测试selenium)自动化测试脚本和执行学之思管理端+学之思学生端每个测试均需提交测试用例文档接口测试用例接口测试需要有缺陷文档性能测试每个接口需要提供聚合报告(每次请求前,清理数据)(测试计划+功......
  • 鉴权测试基本知识及测试内容
    ⼀、授权和鉴权的区别?授权:相当于给⼀个通⾏证鉴权:鉴定是否有权访问(判断有没有通⾏证)二、为什么要鉴权?我们如果想要进⼊房⼦之前必须有钥匙,钥匙匹配了我们才能进⼊这个房间,没有鉴权,就好⽐,这房⼦只要有⼈知道在哪⾥,就可以随意的访问和进⼊,你愿意这么做吗?那对于软件⽽⾔,也同样......
  • Jmeter 引入自己写的jar包代码
    一、编译调试Java代码在编程工具中将代码进行调试,满足需求后将代码进行打包导出成.jar文件,根据不同的编译工具搜索导出功能即可 示例代码一:packagecom.dffl.gyl;publicclassJmeter_test{publicstaticStringmeter_test(){System.out.println(......
  • RabbitMQ + JMeter组合,优化你的中间件处理方式!
     RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息中间件,它是基于Erlang语言编写的,并发能力强,性能好,是目前主流的消息队列中间件之一。 RabbitMQ的安装可参照官网(https://www.rabbitmq.com/),安装完以后启动管理服务,RabbitMQ提供强大的管理功能。 在使用Jmeter处理Rabbi......
  • jmeter自定义函数开发—Web3钱包生成工具
    之前使用Jmeter进行接口测试时,有生成钱包地址的需求,于是有时间就简单写了个自定义函数环境说明JDK1.8.0,Jmeter5.4.3,maven构建工具实现代码新建一个简单的maven项目即可,以下是pom.xml配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org......