본문 바로가기
STUDY

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

by PsychoFLOOD 2022. 4. 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

댓글