前言

工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口。

比如我现在要压测一个修改用户的个人信息接口,每个用户只能修改自己的个人信息。

场景案例

我现在有一个登陆接口A,登陆成功后返回一个token值。A接口登录接口文档基本信息

  • 访问地址:http://127.0.0.1:9000/api/v1/login/
  • 请求类型:POST
  • 请求头部:application/json
  • 请求参数:{"username":"test", "password":"123456"}

    接口返回

    {

    "code": 0,

    "msg": "login success!",

    "token": "234af73571da46ade79ea6a74961b1d23d609b79",

    "username": "test"

    }

B接口需先登陆,修改用户的个人信息,并且用户只能修改自己的个人信息

  • 访问地址: http://127.0.0.1:8000/api/v1/userinfo
  • 请求类型:POST
  • 请求头部:Content-Type: application/json

    Authorization: Token 234af73571da46ade79ea6a74961b1d23d609b79
  • 请求参数:{"name":"test","sex":"M","age":23,"mail":"123@qq.com"}

    接口返回

    {

    "message": "update some data!",

    "code": 0,

    "data": {

    "name": "test",

    "sex": "M",

    "age": 23,

    "mail": "123@qq.com"

    }

    }

如果先登陆再关联到修改个人信息,这样实际上是发了2个请求,真实场景是用户早就登陆了,所以并不需要去压测登陆的场景。

我们只需要拿到token直接去压测B接口就行了。

测试token准备

B接口有两个参数是一一对应的,一个是token,一个是对应的name,比如压测的时候准备100个用户,我这里以10个用户为例

先注册批量的用户用于压测,我这里注册的用户是test1,test2......test10,一起10个用户

'''
批量生成token和需要用的测试参数,如username
大前提,你需要先注册这些用户test1,test2......test10
'''
import requests
# 上海-悠悠,QQ交流群:750815713 url = "http://127.0.0.1:9000/api/v1/login" for i in range(1, 11):
# 拼接用户名 用户名如 test1,test2.....test10
username = "test"+str(i)
body = {"username": username,
"password": "123456"}
r = requests.post(url, json=body)
print(r.json())
# 获取token
token = r.json()["token"]
# a追加模式写入txt
with open("token_user.txt", "a") as fp:
fp.write(token+","+username+"\n")

运行后生成的token_user.txt文件内容如下

f26be862c407a6fabf8fe3290ac21392b6eaf44f,test1
bed455954cb70f2060e17cf85339758cdcf94629,test2
033a47cb03e6d99384121d8a015fbe2542a198b5,test3
a09b5af04a06b274fece0a6766ed056be773294d,test4
49f3fee051c0615128577cfcfe324f226366b824,test5
c2ebaabe55bb651682b9c1c3b3d3779543f7088b,test6
f74dcea201337665f7f6a25905b9845826eb34c8,test7
f3d7bc13d0608196d557f0197a7f2c2c407a7d0d,test8
9c6d7b893ea2e8b226daa0c315299d5968e8a10c,test9
4cfd0827e803a7415e987996c2148312843ed037,test10

jmeter CSV数据文件设置

导入csv 测试数据文件,设置token和user两个变量

HTTP 信息头管理器引用token

请求参数引用user

运行结果

接下来就可以设置线程组愉快的压测了

比如我设置2个线程,4次循环,这样会请求8次,每次都从测试文件里面循环取值



上海-悠悠,QQ交流群:750815713

jmeter压测学习8-压测带token的接口的更多相关文章

  1. Jmeter压力测试学习7--压测带token的接口

    前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口.比如我现在要压测一个修改用户的个人的密码 场景案例 ...

  2. postman带Token测试接口

    首先打开postman.是这样的界面 我们的需求是这样的.实现登录之后返回token.然后请求其他接口时在header头中带上token信息. OK.接下来我们这样操作: 现在登录没有操作token. ...

  3. Jmeter压测学习3---通过正则表达式提取token

    上一个随笔记录的是用json提取器提取token,这个随笔记录用正则表达式提取token 一.添加正则表达式 登录右击添加->后置处理器->正则表达式提取器 正则提取器参数说明: 要检查的 ...

  4. jquery带token访问接口ajax

    1.在公共js里全局设置 //设置全局ajax $.ajaxSetup({ xhrFields: { withCredentials: true } }); 2.登录成功时,设置cookie (注: ...

  5. JMeter在linux上分布式压测步骤(二)

    哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是109 ...

  6. MMM 状压dp学习记

    状压dp学习记 by scmmm 开始日期 2019/7/17 前言 状压dp感觉很好理解(本质接近于爆搜但是又有广搜的感觉),综合了dp的高效性(至少比dfs,bfs优),又能解决普通dp难搞定的问 ...

  7. 接口测试——带token请求post接口(postman学习)

    今天遇到一个接口,是添加备注的,post类型,访问参数中需要带上token才行,我在header 中直接加token参数,接口总返回 403,请登陆 1.考虑yapi接口平台集成的是postman的接 ...

  8. Django学习之django自带的contentType表 GenericRelation GenericForeignKey

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

  9. day 94 Django学习之django自带的contentType表

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

随机推荐

  1. ora-01489 字符串连接的结果过长 解决方案

    如下代码,使用listagg进行分组拼接时,常常会报 ora-01489 错误,造成该报错的主要原因是:oracle对字符变量的长度限制,正常情况下,oracle定义的varchar2类型变量的长度不 ...

  2. LG2996 「USACO10NOV」Visiting Cows

    问题描述 LG2996 题解 和没有上司的舞会双倍经验? \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; te ...

  3. 突然看到原来除了jar包还有war包啊?????

    先来说说区别: 首先,jar包呢,是一个压缩文件,可以由很多文件压缩而成,,简单来说就是,jar包是别人写好的一些类,然后对这些类 进行打包,这就是jar包,你可以直接用这些  jar包,使用里面的类 ...

  4. 【LGR-060】洛谷10月月赛 I div.1&div.2

    Preface 一边打一边写作文打的像shit,T2失智严重特判错了233 Orz Div1 Rank2的foreverlastnig聚聚,顺便说一句显然Luogu的比赛质量比以往显著提高了啊 以下题 ...

  5. Unity编辑器扩展学习 转载

    https://www.xuanyusong.com/archives/category/unity/unity3deditor 1 using UnityEngine; public class T ...

  6. js -- 数组的操作(自己的常用备查)

    1.数组的定义 var arr = [],或者 var arr = [1,2,3,4,5] 2.数组的使用 >数组的合并 concat ,,]; ,]; a = a.concat(b); con ...

  7. fiddler 抓取winform wcf包

    修改客户端配置 <system.net> <defaultProxy> <proxy bypassonlocal="false" usesystemd ...

  8. redis命令之 ----Set(集合)

    SADD SADD key member [member ...] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略. 假如 key 不存在,则创 ...

  9. 记一次内存无法回收导致频繁fullgc机器假死的思路

    确定挂机 络绎不绝的来不同类型的bug 当bug滚滚而来时,不要怀疑,你的发布的应用基本是不可用状态了.观察哨兵监控数据,特别是内存打到80%基本就挂机了,或者监控数据缺失也基本是挂机了.此时应当马上 ...

  10. Kubernetes Pod 调度约束

    Kubernetes Pod 调度约束 可以将pod调度到指定的节点Node内 默认:根据节点资源利用率等分配Node节点. nodeName用于将Pod调度到指定的Node名称上 nodeSelec ...