jmeter压测学习8-压测带token的接口

前言

工作中我们需要压测的接口大部分都是需要先登陆后,带着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次,每次都从测试文件里面循环取值

2020第二期《python接口+测试开发》课程,12月15号开学!

本期上课时间:12月15号-3月29号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • Jmeter取样器中参数和消息体数据用法区别

    初始用Jmeter本想先学习嘛,想整个简单的接口调用,就公司系统的登录接口吧, 结果就一登录接口就遇到各种问题,尤其是在登录接口传入的参数问题耗了很长时间. 步骤: 添加线程组(默认配置即可) 添加一 ...

  • 性能测试总结

    一.概念了解 1. 性能测试的维度和类型 编号 类型 概念 标准 举例 1 基准测试 给系统施加较低压力,查看系统运行状况并记录相关数据作为基础参考 10%~20% 软件最多只给100个人使用,先用1 ...

  • jmeter压测学习37-请求头部自动签名带上X-sign参数

    前言 接口请求 body 带有 sign 签名参数,sign 签名是根据请求 body 除去 sign 本身参数后,拼接请求参数最后 md5 加密生成的. 前面一篇是把 sign 前面参数放到请求的 ...

  • jmeter压测学习36-请求body自动签名带上sign参数

    前言 接口请求body带有sign签名参数,sign签名是根据请求body除去sign本身参数后,拼接请求参数最后md5加密生成的. 使用 jmeter 测试接口,我们希望在请求之前修改 post b ...

  • jmeter压测学习2-linux运行jmeter环境

    前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在linux服务器上使用jmeter做压力测试. 本篇记录下linux上搭建jmeter环境,以及运行jmeter脚本,查看报告 ...

  • jmeter压测学习5-XPath提取器

    前言 有些web项目是前后端不分离的,返回的内容不是那种纯进口返回json格式,返回的是一个HTML页面. 并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数,如:csrfmidd ...

  • jmeter压测学习4-正则表达式提取

    前言 上一个接口返回的token作为下个接口的入参,除了前面一篇讲到的用json提取器提取,也可以用正则提取. json提取器只能提取json格式的数据,正则可以匹配任意的返回. 我现在有一个登陆接口 ...

  • jmeter压测学习3-提取json数据里面的token参数关联

    前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有 ...

  • jmeter压测学习7-登录参数化(CSV 数据文件设置)

    前言 我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况. 如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有 ...

  • jmeter压测学习11-模拟浏览器访问web页面

    前言 在做性能测试的时候,有时候我们希望测试用户访问一个web页面的加载时间,使用 jmeter 压测的话,需模拟浏览器的行为,加载整个页面的内容. 包含一些js,css,png图片资源等文件的加载. ...

  • jmeter压测学习14-jmeter返回内容中文乱码问题

    前言 在使用 jmeter 测试的时候,有些 html 页面返回的中文内容显示乱码,导致无法正常查看中文的内容 乱码场景 在打开百度页面时,返回的html内容中文显示乱码,如下图所示 出现乱码的原因, ...