STUDY

RestAssured Junit test결과중 http request/response 데이터를 Extent Report에 추가하기

PsychoFLOOD 2022. 4. 28. 17:28
728x90
Extent Report 로고인듯..

요즘은 업무상 주로 하는것이 Rest Assured를 활용한 REST Api test인데.. Junit을 활용하여 돌리고 결과를 Extent Report로 내보내는 중이다.
기존코드를 보니... Sucess와 Fail 인 경우를 TestWatcher를 이용해서 리포트에 출력해주고 있다.
여기에 request/response data를 넣어주기 위해서는 RestAssured에서 제공하는 filters 를 활용하면된다.
아래와 같이 초기에 filter를 선언하여 주면 수행중 request/response에 해당하는 값들을 넣을 수 있다.

	//필요한 변수선언
    public static StringWriter requestWriter;
	public static StringWriter responseWriter;
    public static StringWriter errorWriter;
    
    public static PrintStream requestCapture;
    public static PrintStream responseCapture;
    public static PrintStream errorCapture;
    

	//대충 setup하는 부분에 아래를 추가.
    //errorLoggingFilter는 http response 에 error 포함되어 있는 경우만 뽑고 싶을 경우 사용한다.
    requestWriter = new StringWriter();
    requestCapture = new PrintStream(new WriterOutputStream(requestWriter));
    responseWriter = new StringWriter();
    responseCapture = new PrintStream(new WriterOutputStream(responseWriter));
    errorWriter = new StringWriter();
    errorCapture = new PrintStream(new WriterOutputStream(errorWriter));
    RestAssured.filters(new RequestLoggingFilter(requestCapture), new ResponseLoggingFilter(responseCapture), new ErrorLoggingFilter(errorCapture));
                

	//이후 test pass/fail을 기록하는 곳에 아래를 추가하면 된다.
    requestCapture.flush();
	responseCapture.flush();
    test.log(Status.INFO, requestWriter.toString());
    test.log(Status.INFO, responsetWriter.toString());

그런데 수행해보니 data의 줄바꿈이 적용되지 않고 html 결과로 나온다..
이를 해결하려면 log 메소드로 스트링을 추가할때 스트링의 앞뒤로 <pre> </pre>태그를 넣어서 문장형식이 그대로 유지되도록 하면 된다.
이렇게 해서 테스트를 해보니 또 희한한 것이... flush를 해주었음에도 불구하고 testcase마다 생성한 request/response가 계속 쌓이면서 기록이된다..ㅡ.ㅡ;;;
이를 해결하기 위해서는 아래와 같이 StringWriter 의 버퍼를 비워주면 된다.

requestWriter.getBuffer().setLength(0);
responseWriter.getBuffer().setLength(0);

옛날옛적에.. android telephony framework 할때나 java를 사용했었는데... 몇년만에 Eclipse 를 설치하고 java로 나름 끄적끄적 테스트를 위한 코딩을 해보는지 모르겠다..ㅎㅎㅎ
이클립스 heap size를 꽤 키워주었는데도 testcase 천몇백개를 돌다보면 메모리문제로 죽기도 하는 경우도 가끔 생긴다. 노트북이 문제인건지... 사용하는 내가 문제인건지... 모르겠다..ㅎㅎ..








728x90