前言
工作中我們需要壓測的接口大部分都是需要先登陸后,帶着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