안녕하세요 덕분에 하나 해결했는데,
또 하나의 질문이 생겨 버렸습니다. 코드를 보면 아시겠지만 계정을 생성 하고 그 계정으로 로그인을 해서 세션키를 받아서 일련의 로그인 스텝을 검중 하고 싶어서 스크립트를 작성 중입니다. 근데, HTTPResponse result_login = request.POST("http://serverip/api/v1/User/Login", builder.getBytes(), headers()); 에서 에러가 나는 듯 한데, http request 는 하나의 테스트 블럭 안에서 두 번 사용 하면 안되는 건가요? 만약 안된다고 하면 다른 테스트를 몇 개 만들어서 사용할수 있을거 같은데, 그 경우 혹시 변수 할당해서 그 변수를 넘길수 있는 방법이 있을까요? import HTTPClient.HTTPResponse import HTTPClient.NVPair import ch.qos.logback.classic.Level import net.grinder.plugin.http.HTTPPluginControl import net.grinder.plugin.http.HTTPRequest import net.grinder.script.GTest import net.grinder.scriptengine.groovy.junit.GrinderRunner import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread import org.junit.Test import org.junit.runner.RunWith import org.slf4j.LoggerFactory import static net.grinder.script.Grinder.grinder import static org.hamcrest.Matchers.is import static org.junit.Assert.assertThat /** * Created by nd-xm-mac5 on 15/12/24. */ import groovy.json.JsonSlurper import groovy.json.JsonBuilder import groovy.json.JsonOutput @RunWith(GrinderRunner) class LoginDemo { public static GTest test public static HTTPRequest request // 프로세스 당 1 번 실행 !!! @BeforeProcess public static void beforeProcess() { HTTPPluginControl.getConnectionDefaults().timeout = 6000 test = new GTest(1, "http://serverip/swagger/") request = new HTTPRequest() test.record(request); grinder.logger.info("before process."); } // 쓰레드 당 1 번 실행 !!! @BeforeThread public void beforeThread() { LoggerFactory.getLogger("worker").setLevel(Level.DEBUG) grinder.statistics.delayReports = true; grinder.logger.info("before thread."); } private NVPair[] headers() { return [ new NVPair("Content-type", "application/json;charset=UTF-8") ]; } // 지정한 만큼 반복 @Test public void test1() { grinder.logger.info("================ createid test_start"); def json = '{}'; HTTPResponse result = request.POST("http://server/api/v1/User/CreateID", json.getBytes(), headers()); grinder.logger.info(result.getText()); def message = new JsonSlurper().parseText(result.getText()) grinder.logger.info(message.id) if (result.statusCode == 301 || result.statusCode == 302) { grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode); } else { assertThat(result.statusCode, is(200)); } // ================================================================= grinder.logger.info("================ login test_start"); def login_json_str ='{"id": "" , "connectedIP": "string" , "os_ver" : 1}'; def slurp = new JsonSlurper().parseText(login_json_str) def builder = new JsonBuilder(slurp) builder.content.id = message.id; println builder.toPrettyString() HTTPResponse result_login = request.POST("http://serverip/api/v1/User/Login", builder.getBytes(), headers()); /* ERROR No signature of method: net.grinder.plugin.http.HTTPRequest.POST() is applicable for argument types: (String, LinkedHashMap, [LHTTPClient.NVPair;) values: [http://serverip/api/v1/User/Login, [getBytes:[:]], [HTTPClient.NVPair[name=Content-type,value=application/json;charset=UTF-8]]] Possible solutions: POST(), POST(java.lang.String, [LHTTPClient.NVPair;), POST(java.lang.String, [B, [LHTTPClient.NVPair;), POST(java.lang.String, [LHTTPClient.NVPair;, [LHTTPClient.NVPair;), POST(java.lang.String, java.io.InputStream, [LHTTPClient.NVPair;), POST([LHTTPClient.NVPair;) groovy.lang.MissingMethodException: No signature of method: net.grinder.plugin.http.HTTPRequest.POST() is applicable for argument types: (String, LinkedHashMap, [LHTTPClient.NVPair;) values: [http://serverip/api/v1/User/Login, [getBytes:[:]], [HTTPClient.NVPair[name=Content-type,value=application/json;charset=UTF-8]]] Possible solutions: POST(), POST(java.lang.String, [LHTTPClient.NVPair;), POST(java.lang.String, [B, [LHTTPClient.NVPair;), POST(java.lang.String, [LHTTPClient.NVPair;, [LHTTPClient.NVPair;), POST(java.lang.String, java.io.InputStream, [LHTTPClient.NVPair;), POST([LHTTPClient.NVPair;) at LoginDemo.test1(cr3.groovy:96) at net.grinder.scriptengine.groovy.junit.GrinderRunner.run(GrinderRunner.java:164) at net.grinder.scriptengine.groovy.GroovyScriptEngine$GroovyWorkerRunnable.run(GroovyScriptEngine.java:147) at net.grinder.engine.process.GrinderThread.run(GrinderThread.java:118) */ grinder.logger.info(result_login.getText()); if (result_login.statusCode == 301 || result_login.statusCode == 302) { grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result_login.statusCode); } else { assertThat(result_login.statusCode, is(200)); } } } |
아,
HTTPResponse result_login = request.POST("http://server.com/api/v1/User/Login", builder.toPrettyString().getBytes(), headers()); 하니까 로그인도 잘 됩니다...형식이 달랐던 것,.,때문에 안되었었네요.... 제가 자바 쪽은 전혀 무뇌한이라... 혹시 이런 문제 겪으실 분들을 위해 그대로 두겠습니다.!!! |
Free forum by Nabble | Edit this page |