This post was updated on .
안녕하세요
nGrinder 를 이번에 처음 접한 유저 입니다.~ 아래와 같은 그루비 스크립트로 계정 생성 하는 스크립트는 성공을 했는데요 이제 1. 계정 생성 CreatID 2. 계정으로 로그인 Login 하면 response 로 sessionkey 발급 3. 세션키로 유저 정보 GetUser 하면 유저정보 내려주고 하는 일련의 시나리오로 테스트 를진 행 해 보려하는데요 json을 가지고 하는것이 잘안되는데, 혹시 샘플같은 것이 있을까요? CreateID 하면 http response 로 {"result":0,"id":"d0efcfde-6683-40af-aece-907cb61360ab"} 이런식으로 현재 로그는 잘찍히고 있습니다. 이 데이터에서 id 만 다시 로그인 에서 사용하려고 하는 케이스 입니다. 맨 아래 소스쪽 주석 풀고 하면 나오는 에러 로그 가 바로 밑 입니다. ------------------- No signature of method: groovy.json.JsonSlurper.parseText() is applicable for argument types: (HTTPClient.HTTPResponse) values: [HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Connection: keep-alive Date: Fri, 23 Apr 2021 08:21:05 GMT Server: nginx/1.16.1 ] Possible solutions: parseText(java.lang.String), parse([B), parse([C), parse(java.io.File), parse(java.io.InputStream), parse(java.io.Reader) groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parseText() is applicable for argument types: (HTTPClient.HTTPResponse) values: [HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Connection: keep-alive Date: Fri, 23 Apr 2021 08:21:05 GMT Server: nginx/1.16.1 ] Possible solutions: parseText(java.lang.String), parse([B), parse([C), parse(java.io.File), parse(java.io.InputStream), parse(java.io.Reader) at LoginDemo.test1(cr3.groovy:83) 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) ------------------ 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 @RunWith(GrinderRunner) class LoginDemo { public static GTest test public static HTTPRequest request @BeforeProcess public static void beforeProcess() { HTTPPluginControl.getConnectionDefaults().timeout = 6000 test = new GTest(1, "http://server.com/swagger/") request = new HTTPRequest() test.record(request); grinder.logger.info("before process."); } @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("test_start"); def json = '{}'; HTTPResponse result = request.POST("http://server.com/api/v1/User/CreateID", json.getBytes(), headers()); grinder.logger.info(result.getText()); // 아래 때문에 에러 나서요 // // def message = """ // { // "result":"0","id":"dsadasdsadsadsadsa" // }" // message = new JsonSlurper().parseText(result) // 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)); } } } |
Administrator
|
안녕하세요!
`parseText()` 메서드에 잘못된 파라미터를 전달하여서 발생하는 오류로 보입니다. `new JsonSlurper().parseText(result)`로 작성하셨는데 이렇게되면 HTTPResponse 객체를 파라미터로 전달하게 됩니다. `new JsonSlurper().parseText(result.getText())`와 같은 방법으로 response의 body를 String 형태로 반환받아서 parseText() 메서드 파라미터로 전달하면 스크립트가 정상적으로 동작할 것 같습니다. |
Free forum by Nabble | Edit this page |