成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JMeter與Python的多重交響:從入門到高級應用(下)

開發 測試
在性能測試領域,Apache JMeter已經成為測試專業人士的首選工具,但在某些情境下,為了滿足特定需求,我們需要更多的靈活性,比如引入Python來進行特定操作或處理復雜邏輯。

接上文《JMeter與Python的多重交響:從入門到高級應用(上)

在性能測試領域,Apache JMeter已經成為測試專業人士的首選工具,用于模擬用戶行為、測量響應時間、評估系統性能。但在某些情境下,為了滿足特定需求,我們需要更多的靈活性,比如引入Python來進行特定操作或處理復雜邏輯。

一、OS Process Sampler

在OS Process Sampler中,可以直接執行系統命令,這也包括執行Python腳本以及其他亂七八糟的腳本或者文件,但是我們這里只介紹關于調用python腳本的知識。

1.梳理步驟

  • 先編寫python腳本,可以接收參數也可以不接收參數,但是一定要使用 print 打印結果出來
  • 如果是windows系統,編寫一個.bat 文件,讓jmeter直接執行文件,如果linux文件,則編寫shell文件
  • 啟動jmeter,添加一個os process sample ,然后配置里面的信息
  • 添加一個正則提取器,提取調用外部文件返回的結果就完成我們的所有操作了。

2.演練開始

下面開始步驟一的操作

如下:加密文件中的python代碼:

import base64
import sys
from Crypto.Cipher import AES
import binascii

def add_to_16(text):
    while len(text) % 16 != 0:
        text += '\0'
    return text

def encrypt(data, password):
    if isinstance(password, str):
        password = password.encode('utf8')
    bs = AES.block_size
    pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)
    cipher = AES.new(password, AES.MODE_ECB)
    data = cipher.encrypt(pad(data).encode('utf8'))
    encrypt_data = binascii.b2a_hex(data)  # 輸出hex
    # encrypt_data = base64.b64encode(data)         # 取消注釋,輸出Base64格式
    return encrypt_data.decode('utf8')

if __name__ == '__main__':
    data = sys.argv[1]  # 待加密數據
    # data = '1915'  # 待加密數據
    password = '5544223414143242332423423423423'  # 16,24,32位長的密碼(密鑰)
    password = add_to_16(password)
    encrypt_data = encrypt(data, password)
    # print('加密前數據:{}\n======================='.format(data))
    print(f"sign={encrypt_data}")

    # decrypt_data = decrypt(encrypt_data, password)
    # print('解密后的數據:{}'.format(decrypt_data))

上述代碼的大概邏輯就是接收傳進來的待加密字符串,然后進行AES加密,最后打印加密后的數據結果。

接著我們開始步驟二的操作用

windows舉例,.bat 文件內容如下:

c:
cd C:\Users\chenyongzhi11\Desktop\
python .\do_AES.py %1

上面文件內容就是在命令行執行python文件,由于前面的python文件接收參數,我們這里使用 %1 這個占位來接收jmeter傳進去的參數,我們把文件命名為 :execute_python_script.bat

接著我們開始步驟三的操作

添加一個OS Process Sampler:

我們看下這個界面該如何配置:

這會調用外部Python腳本,并傳入參數input_param。

最后一步操作

添加一個正則表達式提取器,編寫正則,看看能不能提取到結果:

最后我們用debug sample檢測最終結果:

這樣整個流程完成了,也就可以很方便的調用外部文件做接口自動化了。

二、其他方案

這里再簡單介紹兩種能夠處理python代碼的方案:

使用函數助手[jmeter-functions-execute-python-script-1.0.jar]鏈接:https://pan.baidu.com/s/1JrPW723es9rFbp18mNAvug?pwd=thjp 提取碼:thjp這個就直接放入到:\lib\ext 下面就行,然后重啟jmeter使用如圖:

使用BeanShell Sampler組件這個需要一定的java代碼能力,大伙可以自行看著玩,因煩不建議,前面的os process sample 舒服,也就是說,既然都要寫beanshell了,直接java代碼干就完事了,哈哈!。示例代碼,不保證能用:

import java.io.BufferedReader;
import java.io.InputStreamReader;

//1. 命令里的路徑改成自己腳本的路徑  
String command = "/opt/homebrew/bin/python3 /Users/xxx/Code/python-mysql/gen_id.py";

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
 
pr.waitFor();
  
BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
StringBuilder response = new StringBuilder();
while ((line = b.readLine()) != null) {
    response.append(line);
}
  
String response_data = response.toString();
  
System.out.println(response_data);
log.info(response_data);
b.close();

// 2. 定義Jmeter中引用的變量名
vars.put("xxx",response_data); //把結果賦值給變量 ,方便后面調用

By the way,很多小伙伴反饋說既然用jmeter了,干嘛還往里整python代碼,不是多此一舉嘛?這里勇哥談談自己的幾點愚見:

  • 現有代碼復用:有時候可能我們有一些現成的python代碼用特定的操作或者業務邏輯,嵌入這些python代碼就可以避免重復造輪子了
  • 代碼能力:很多測試人員的技術棧是偏python的,在使用jmeter做自動化測試時,利用python的靈活及強大的庫工具就很容易入手了。
  • 集成其他工具:可能有一些自己的python工具很好用,但是想集成到一起就可以考慮這樣的偏方了

總之jmeter既然可以這樣玩,那么給到用戶也就多一種使用體驗,多一種解決問題的可能性。

責任編輯:趙寧寧 來源: 測試玩家勇哥
相關推薦

2023-09-16 19:33:45

JMeter性能測試

2024-04-11 14:00:28

2023-10-27 08:42:56

Python字典

2024-04-01 09:32:23

AccumulatePython工具

2025-01-07 14:42:09

2024-10-17 09:57:30

2023-09-20 00:08:37

2024-07-09 09:33:18

2021-12-12 18:15:06

Python并發編程

2024-02-26 08:52:20

Python傳遞函數參數參數傳遞類型

2020-07-07 10:50:19

Python丄則表達文本

2024-06-07 08:51:50

OpenPyXLPythonExcel文件

2017-06-26 09:15:39

SQL數據庫基礎

2025-03-28 06:01:00

TypeScript泛型開發

2012-02-29 00:49:06

Linux學習

2025-02-24 10:07:10

2024-06-18 08:21:31

2023-05-09 08:34:51

PythonWith語句

2024-01-11 09:35:12

單元測試Python編程軟件開發

2024-11-27 15:49:46

字符串Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品456 | 日韩三区 | 国产精品欧美一区二区 | av网址在线| 在线亚洲电影 | 国产精品乱码一区二区三区 | 成人在线免费观看 | 久久久久一区二区三区 | 久久久久久91 | 欧美性网 | 天天躁日日躁狠狠很躁 | 久久不卡视频 | 中文字幕视频在线免费 | 欧美成人a | 成人在线免费观看视频 | 欧美在线一区二区三区 | 羞羞视频在线观看网站 | a级毛片基地 | 一级做a爰片久久毛片 | 欧美黄色性生活视频 | 国产第一页在线播放 | 国产成人精品午夜视频免费 | 国产一区三区视频 | 国产精品99久久久久久www | 国产精品亚洲综合 | 国产一区二区在线免费视频 | 日韩成人精品 | 亚洲国产网址 | 欧美性生活网 | 亚洲精品欧美 | 久久久久久久久久久久久九 | 欧美日韩亚洲一区 | 色婷婷久久久亚洲一区二区三区 | 天天操 天天操 | 亚洲国产精品福利 | 在线视频一区二区三区 | 亚洲美女视频 | 狠狠干2020| 美日韩免费视频 | 久久久久久网 | 欧洲视频一区 |