Jmeter 執行Python代碼(十二)


   Jmeter 中BeanShell 中支持JAVA語言,可以使用Java來輔助我們實現一些邏輯,之前也介紹過BeanShell 導入Java的三種模式,如果我們不會寫Java怎么辦(雖然我們遇見的一些問題可以通過百度查詢到結果),但是我們是否可以轉換下思路來解決這樣的問題,比如使用比較熟悉的語言例如Python(目前對於測試人員來說Python屬於普及的語言)來代替實現一些代碼邏輯。介紹Jmeter 執行Python代碼,首先我們需要來先介紹下JSR,因為這個過程的實現與他密切相關。

  一、JSR 簡介

JSR是Java Specification Requests的縮寫,意思是Java 規范提案。是指向JCP(Java Community Process)提出新增一個標准化技術規范的正式請求。任何人都可以提交JSR,以向Java平台增添新的API和服務。JSR已成為Java界的一個重要標准。

我們了解了什么是JSR以后我們下面需要在Jmeter中使用JSR223標准來執行我們自己的Python代碼

二、Jmeter JSR223 Sampler

  1、Jmeter JSR223 支持的語言  

  Jmeter 基於JSR223標准 支持使用多種編程語言編寫腳本程序,默認使用Groovy,默認是不支持Python語言,我們需要通過Jpython來擴展Jmeter對Python語言的支持

    

     2、Jmeter 擴展Python語言支持

1、下載Jython 

  我們需要選擇Jython Standalone來下載,目前里面提供了多種版本,我們只想選擇最新版本下載;

  步驟1.

 

       

      步驟2.

 

 步驟3  

2、把下載的jython-standalone-2.7.2.jar 放到 jmeter的lib/ext文件夾。重啟jmeter,此時就可以看到支持Python語言(如果不重新啟動默認不會生效)

 

   三、Jmeter 配置JSR223 Sampler

    1、添加JSR223 Sampler

     

 

   2、選擇實現邏輯的語言

 

     3、通過Python實現身份證號碼的md5加密(Script區域可以實現任意代碼邏輯)

import hashlib
# 定義密碼
password = "admin"
# 對密碼進行md5加密
m = hashlib.md5()
m.update(password .encode(encoding="utf-8"))
password = m.hexdigest()
# 存儲value到變量key
vars.put("password",password)

   將代碼的邏輯拷貝到Script區域

 

    4、實現的效果,我們需要添加一個新的請求來獲取python代碼生成的md5加密的結果,我們通過打印日志的方式把結果輸出

    

     我們在JSR223 Sampler中的代碼實現了生成的邏輯,那么重點我們還需要去使用這個結果,要不然我們不會費這么大的力氣來搞這個事情

# Jmeter 變量的引用
${變量名}

    其實無論是java還是python或者其他的語言,主要是為我們來服務,有時候配置不一定能滿足需求,所以需要通過語言來擴展一些信息輸入和輸出,這里使用Python主要是來實現一些復雜的內容的輸入動作。

    5、上述案例導入的是Python的自帶的包,導入第三方包的時候,需要設置下解析器會搜索的前目錄

import sys
sys.path.append('D:\Program Files\Python\Python27\Lib')
sys.path.append('D:\Program Files\Python\Python27\Lib\site-packages')
from faker import Faker

  如果沒有設置導入時會報錯“o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: ImportError: No module named faker in <script> at line number 4javax.script.ScriptException: ImportError:”

  

 

     測試的過程中遇見了很多坑,目前主要發現JSR223 Sampler Python腳本不支持python3和不設置解析器會搜索的前目錄,所以需要在實踐的過程中注意些。

 

.    

  


免責聲明!

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



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