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) 디버그 샘플러에 던지면 다음을 볼 수 있습니다.