Posted by
zpsx on
URL: http://ngrinder.373.s1.nabble.com/1-test-scope-http-request-response-tp2700.html
안녕하세요 덕분에 하나 해결했는데,
또 하나의 질문이 생겨 버렸습니다.
코드를 보면 아시겠지만
계정을 생성 하고 그 계정으로 로그인을 해서 세션키를 받아서
일련의 로그인 스텝을 검중 하고 싶어서 스크립트를 작성 중입니다.
근데,
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));
}
}
}