2017-11-18 6 views
2

우리는 json 요청을 게시 한 다음 UI에서 몇 가지 작업을 확인해야하는 시나리오가 있습니다. 그래서 우리는 요청에 부딪히는 가라데 기능 파일을 가지고 있으며 그 후에 기능 파일 내에서 자바 클래스를 호출합니다. Java 클래스는 Selenium Webdriver 테스트를 실행합니다. 자바 메소드에서 우리는 Karate Reports에 다시 로그인하기를 원하는 몇 가지 어설 션/정보 메시지를 가지고 있습니다.자바 클래스에서 메시지를 로깅 보고서로 다시 로깅

자바 클래스에서 공수 테스트 리포트에이 메시지를 쓸 수있는 방법이 있습니까?

+0

적절한 태그를 추가하십시오. – Lakmi

답변

2

가라데 parallel runner을 사용하는 경우 com.intuit.karate 패키지에 기록 된 내용을 수집하도록 설계되어 있으며 에 표시됩니다.

따라서 using the same slf4j Logger을 시도해 볼 수 있습니다.

더 좋은 방법은 로그에 필요한 모든 정보가 포함 된 Java 코드의 return a Map back to Karate 일 수 있습니다. 그렇다면 print 키워드를 사용해야합니다. 실제로이 접근 방법을 권하고 싶습니다. 덜 복잡해야하며 Cucumber HTML보고를 사용한다고 가정하지 않습니다. 얻은 JSON의 match 키워드를 사용하여 공수 주장을 할 수도 있습니다 (이 예는 dogs.feature 참조).

+1

위의 제안을 살펴 보겠습니다. – ajoseph

1
우리는 아래 그림과 같이 "com.intuit.karate"다시 로그인 해보십시오 않았다

'개요 - features.html 주요'과의 로깅 자바 클래스의 보고서

로거 :

개인 정적 최종 로거 logger = LoggerFactory.getLogger ("com.intuit.karate");

그러나 Java 클래스에서 예외가 발생하면 먼저 예외가 표시되고 기록 된 모든 정보가 표시되며 둘 다 보고서에 다른 부분으로 존재한다는 관찰을했습니다. 예를 들어

를 들어

이 내가 기능 파일에서 호출하고있는 자바 클래스의 로거 샘플 방법입니다

public void myTestMethod() { 
    logger.info("Starting Test"); 
    logger.info("Setting path of chrome driver"); 
    System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); //driver doesnt exist in this path 
    logger.info("invoking chrome"); // we would expect the exception to be thrown after this line 
    driver = new ChromeDriver(); 
    logger.info("perform search in google"); 
    driver.get("http://www.google.com"); 
    driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 
    driver.findElement(By.id("lst-ib")).submit(); 
    driver.quit(); 
} 

그러나 예외가 먼저 한 후 모든 정보를 표시 보고서에

Java 클래스에서 기록됩니다. 두 가지 모두 보고서의 다른 부분처럼 보입니다. 여기의 보고서를 참조하십시오. https://www.screencast.com/t/bBhAIj7WKj

위의 경우 "Chrome 호출"을 기록한 행 다음에 예외가 발생할 수 있습니다. 보고서에서 테스트 실패를 식별합니다. 가능한 경우 알려 주시기 바랍니다.

+2

알림을받지 못했기 때문에이 사실을 확인하는 데 다소 시간이 걸렸습니다. SO를 다르게 사용해야 할 수도 있습니다. 새로운 질문을 여는 것은 괜찮습니다. 요청에 대해서는 구현하기가 어려울 것입니다. 정상적인 시나리오에서 로그가 부풀어 오르는 효과가 있기 때문입니다. try catch를 수행하고 오류 오브젝트와 함께 여분의 로그를 추가 할 수 있습니다. 또한 내가 제안한 두 번째 접근법을 시도해보십시오. –

+2

추가 로거를 사용하여 try catch를 사용하면 지금 문제가 해결됩니다. 우리는 또한 당신이 제안한 두 번째 접근법을 살펴볼 것입니다. – ajoseph