Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- port forwarding
- sshpass
- postgresql
- create table
- openpyxl
- centos
- mysql
- 28015
- ftp
- perfect
- STF_PortForwarding
- appium
- ssh
- kitura
- Jupyter Notebook
- PYTHON
- Jupyter
- rethinkdb
- postgres
- GoCD
- ubuntu
- nohup
- appium server
- SWIFT
- nmap
- STF
- Materials
- insert
- 실행권한
- nGrinder
Archives
- Today
- Total
don't stop believing
nGrinder에서 json 다루기 본문
nGrinder에서 json을 다룰때는 JSONObject을 사용합니다. Python의 기본 json 을 다루는 것과는 조금 다릅니다.
-*- coding:utf-8 -*- # A simple example using the HTTP plugin that shows the retrieval of a # single page via HTTP. # # This script is automatically generated by ngrinder. # # @author admin from net.grinder.script.Grinder import grinder from net.grinder.script import Test from net.grinder.plugin.http import HTTPRequest from net.grinder.plugin.http import HTTPPluginControl from HTTPClient import NVPair from org.json import JSONObject control = HTTPPluginControl.getConnectionDefaults() # if you don't want that HTTPRequest follows the redirection, please modify the following option 0. # control.followRedirects = 1 # if you want to increase the timeout, please modify the following option. control.timeout = 6000 test1 = Test(1, "Test1") request1 = HTTPRequest() # Make any method call on request1 increase TPS test1.record(request1) class TestRunner: # initlialize a thread def __init__(self): grinder.statistics.delayReports=True pass # test method def __call__(self): result = request1.GET("http://google.com") message = """ { "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "List": ["apple", "orange", "banana"], "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": [{ "para": "A meta-markup language, used to create markup languages such as DocBook." }, { "para": "Tests resulting in error only contribute to the Errors column." }, { "para": "registered plug-in net.grinder.plugin.http.HTTPPlugin" }], "GlossSee": "markup" } } } } } """ json_1 = JSONObject(message) json_2 = json_1.getJSONObject("glossary") json_3 = json_2.getJSONObject("GlossDiv") json_4 = json_3.getJSONObject("GlossList") json_5 = json_4.getJSONObject("GlossEntry") json_6 = json_5.getString("GlossTerm") json_7 = json_5.getString("List") json_8 = json_5.getJSONArray("GlossDef").getJSONObject(1).getString("para") print "----------> %s" % json_8 for i in range(0, json_5.getJSONArray("GlossDef").length()) : print "para(%s)----------> %s" % (i, json_5.getJSONArray("GlossDef").getJSONObject(i).getString("para")) if result.getStatusCode() == 200 : grinder.statistics.forLastTest.success = 1 elif result.getStatusCode() in (301, 302) : grinder.logger.warn("Warning. The response may not be correct. The response code was %d." % result.getStatusCode()) grinder.statistics.forLastTest.success = 1 else : grinder.statistics.forLastTest.success = 0
만약 nGrinder안에서 Python의 samplejson을 사용하고 싶다면 samplejson 모듈을 nGrinder에 추가하고 아래와 같이 사용하면 됩니다.
simplejson 모듈을 다운로드 하고 폴더와 파일들을 nGrinder의 lib 폴더로 복사하면 됩니다.
대량의 파일을 nGrinder에 올릴때는 nGrinder에서 제공하는 svn을 사용하면 편합니다.
# -*- coding:utf-8 -*- # A simple example using the HTTP plugin that shows the retrieval of a # single page via HTTP. # # This script is automatically generated by ngrinder. # # @author admin from net.grinder.script.Grinder import grinder from net.grinder.script import Test from net.grinder.plugin.http import HTTPRequest from net.grinder.plugin.http import HTTPPluginControl from HTTPClient import NVPair import simplejson as json control = HTTPPluginControl.getConnectionDefaults() # if you don't want that HTTPRequest follows the redirection, please modify the following option 0. # control.followRedirects = 1 # if you want to increase the timeout, please modify the following option. control.timeout = 6000 test1 = Test(1, "Test1") request1 = HTTPRequest() # Make any method call on request1 increase TPS test1.record(request1) class TestRunner: # initlialize a thread def __init__(self): grinder.statistics.delayReports=True pass # test method def __call__(self): result = request1.GET("http://google.com") message = """ { "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "List": ["apple", "orange", "banana"], "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": [{ "para": "A meta-markup language, used to create markup languages such as DocBook." }, { "para": "Tests resulting in error only contribute to the Errors column." }, { "para": "registered plug-in net.grinder.plugin.http.HTTPPlugin" }], "GlossSee": "markup" } } } } } """ find_text = json.loads(message) print find_text["glossary"]["title"] print find_text["glossary"]["GlossDiv"]["title"] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["ID"] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["SortAs"] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["GlossTerm"] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["List"][0] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["List"][1] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["List"][2] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["GlossDef"][0]["para"] print find_text["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["GlossDef"][1]["para"] if result.getStatusCode() == 200 : grinder.statistics.forLastTest.success = 1 elif result.getStatusCode() in (301, 302) : grinder.logger.warn("Warning. The response may not be correct. The response code was %d." % result.getStatusCode()) grinder.statistics.forLastTest.success = 1 else : grinder.statistics.forLastTest.success = 0
하지만 simplejson 모듈을 nGrinder에 업로드 하는것 보다 JSONObject를 익히는 게 더 편할 것 같습니다.
'Testing Automation > nGrinder' 카테고리의 다른 글
CentOS에 nGrinder 설치 하기 (v3.4) (0) | 2017.10.11 |
---|---|
nGrinder Controller 설정 (1) | 2017.09.19 |
Ubuntu에 nGrinder 설치 하기 (v3.4) (0) | 2017.09.05 |
Comments