jmeter 參數化大數據取唯一值方式


jmeter 參數化大數據取唯一值方式

一、用時間函數:

因為時間戳永遠沒有重復,jmeter參數化,而且要取唯一值,可以考慮用時間函數加上其他函數一起:
# 以13位的時間戳作為 userID
nowTime = lambda: int(round(time.time() * 1000))
userID = str(nowTime())
print("userID--------" + userID)
輸出結果:
userID--------1574172135349

每次輸出的結果都不一樣:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time

nowTime = lambda: int(round(time.time() * 1000))
userID = str(nowTime())

for i in range(0,10):
    print("userID--------" + userID)


輸出結果:
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139
userID--------1574172365139

 

 

二、用UUID:

解決上面的問題,還可以用 UUID來作為參數,UUID通常以36字節的字符串表示,示例如下:
3F2504E0-4F89-11D3-9A0C-0305E82C3301
ID多數是數字的,如果不需要 “-”,可以去掉。

如下是分析在jmeter中如何使用:

1,新建一個BeanShell Sampler;

 在BeanShell Sampler編寫UUID的代碼:
import java.util.UUID;
 
UUID uuid1 = UUID.randomUUID();    //獲取UID的值
 
vars.put("transferNo",(uuid1.toString()).toUpperCase().replaceAll("-",""));  
 
//去掉UUID的“-”,再賦值給transferNo  運行獲取的參數就是:3F2504E04F8911D39A0C0305E82C3301 
//vars.put("transferNo",(uuid1.toString()).toUpperCase()); 
//這個就是不用去掉UUID的“-”    運行獲取到的參數就是:3F2504E0-4F89-11D3-9A0C-0305E82C3301

 

2,新建一個http請求;

 

在BeanShell Sampler獲取到UUID的參數后,可以在http請求頁面,直接用:     "transferNo":"${transferNo}"      獲取。
運行后,該參數值幾乎不出現重復的問題。UUID可以根據自己需要的參數,進行優化。

 

 

三,直接寫代碼for循環生成大量唯一不重復的測試數據

#!/usr/bin/env python
# -*- coding: utf-8 -*-

for i in range(1000000, 9000000):
k = i + 1
q = '2018' + str(k)
print('q ========= ' + q)


輸出結果:
.........

q ========= 20181145532
q ========= 20181145533
q ========= 20181145534
q ========= 20181145535
q ========= 20181145536
q ========= 20181145537

.........

最后用txt或者excel將生成的大量數據導入jmeter進行並發請求。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM