Jmeter에 JSR223 Sampler 추가, python 스크립트 가져 오기, jmeter와 python 간의 변수 전송 실현. 마지막으로 스크립트에 전달 된 중국어 문자가 디버그 샘플러에서 왜곡 된 문자로 표시됩니다. 해결 방법?

Jmeter에 추가 된 JSR223 샘플의 python 스크립트는 다음과 같습니다.

hashlib 가져 오기

def get_app_sign (data_dict, secret) :

params_list = sorted (data_dict.items (), key = lambda e : e [0], reverse = False)

params_str = "".join ( "{} {}". format (k, v) for k, v in params_list) + 's'+ secret

s = hashlib.sha1 ()

s.update (params_str.encode ())

s.hexdigest (). upper () 반환

 

sid = "$ {sessionid}"# 1. jmeter에서 변수 호출

data_dict = {

"타임 스탬프": 123,

"장치": "앱",

"session_id": sid # 1의 sid = "$ {sessionid}"이므로 여기에서 jmeter의 변수를 직접 전달할 수 있습니다.

}

비밀 = "y"

결과 = get_app_sign (data_dict, secret)

결과 = data_dict [ "session_id"]

 

vars.put ( 'jp', result) # 결과를 jp 변수 이름으로 jmeter 공간으로 유도 한 다음 jmeter에서 직접 호출 할 수 있습니다. $ {jp}

vars.put ( 'jps', 결과)

또한 변수가있는 경우 결과 트리에 Debug Sampler를 추가하는 것이 좋습니다.

전망:

 

 

 

python 스크립트를 통해 생성 한 변수 인 jp는 이미 jmeter에서 호출 할 수 있습니다.

또한 중국어 문자를 Python으로 가져 오는 경우 Python 스크립트 시작 부분에서 가져옵니다.

import sys
reload (sys)
sys.setdefaultencoding ( 'utf-8')

디버그 샘플러에서 나중에 내 보낸 변수가 깨져 보이는 것으로 나타났습니다. 작동 방법, 지침을 제공해주세요 ....

 

해결책:

[code = python]
data_dict = {    "timestamp": 123,     "device": "app",     "session_id": sid,     "okc": "呵呵"  } results1 = data_dict [ "okc"]. decode ( 'utf- 8 ')  vars.put ('jps1 ', results1)






결과 1 = data_dict [ "okc"]. decode ( 'utf-8'); 그런 다음 vars.put ( 'jps1',와 같이 decode ( 'utf-8')를 통해 py 스크립트에 전달하려는 변수를 전달합니다. 결과 1) 디버그 샘플러에 던지면 다음을 볼 수 있습니다.

추천

출처blog.csdn.net/qq_25162431/article/details/96482462