보고서 포털에서logback과testng과 로그 통합을 하는 방법
이미지 속성:, logback logo, Gradle logo - wikipedia
안녕하십니까, 친구👋,
Reportportal은 선택한 테스트 실행 프로그램과 원활하게 통합할 수 있는 매우 독특한 오픈 소스 보고 솔루션입니다.
나는 현재 회사에서 줄곧 보고서 문호를 사용하고 있는데, 최근에 나는 그것의 기능을 더욱 상세하게 연구하기 시작했다.
만약 보고 포털의 초보자이고docker에 기본 instanceon을 설정하고 여기저기 놀고 싶다면, 이전에 이 주제에 대한 나의 댓글이 매우 유용하다는 것을 발견할 수 있을 것이다
채트아웃:
보고서 포털을 설치하고 테스트 실행을 전송하기 시작하면 테스트 실행에 대한 더 자세한 정보를 얻을 수 있습니다.보고서 포털은 실패한 단언된 창고 추적을 표시하지만, 상술한 조작 시퀀스의 모든 컨트롤러 로그를 제공하지 않습니다.
간단한 예로 API 요청이 500에서 실패하고 응답 코드에 단언이 작성되었다고 가정하면 Report portal은 일치하지 않는 상황을 알려주고 API 요청을 하지 않습니다. 이 요청이 TestNG
Reporter.log()
메시지를 통해 콘솔에 인쇄되었을 수도 있습니다.그렇다면, 우리는 어떻게 일지를 보고서 포털로 전송합니까?어떻게 설정하는지 봅시다.
logback을 사용하여 로깅 설정
Kotlin으로 테스트를 작성하고 Gradle/TestNG로 실행합니다.그러나 JVM 스택(Java 등)에 있다면 이 과정은 매우 비슷할 것입니다
높은 수준에서 우리는 4단계를 해야 한다
.xml
및 ReportPortalaPenderaven/Gradle 종속성 추가
우리는
logback
을 옵션으로 사용할 기록기를 사용하지만, 원한다면 log4j
을 지원할 수도 있습니다.build.gradle
파일에 다음 의존 항목 추가compile group: 'com.epam.reportportal', name: 'agent-java-testng', version: '5.0.7'
compile group: 'com.epam.reportportal', name: 'logger-java-logback', version: '5.0.3'
compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
testCompile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
보고서 포털 탐지기를 테스트 작업에 추가
이 점을 추가한 것은 틀림없지만,
test
gradle 작업에reportportallistener를 추가했는지 확인하십시오. 다음은 예시입니다. 그 중에서gradle 테스트 작업이 있습니다. 그 중에서listener 클래스 경로가 추가되었습니다.task runTests(type: Test) {
useTestNG {
testLogging.showSt)ndardStreams = true
useDefaultListeners = false
listeners << 'com.epam.reportportal.testng.ReportPortalTestNGListener'
listeners << 'listeners.ExtentReporterNG'
includeGroups System.getProperty('tag', 'NONE')
}
}
로그 프로필 추가
로그 프레임워크는 구성 XML 파일이나 속성 파일을 첨부하여 구성할 수 있습니다.logback을 사용하기 때문에 클래스 경로의 어느 위치에 파일을 추가해야 합니다
runTests
Logback은 기본적으로 다른 목적지가 있습니다. 로그를 호출된 목적지에 쓸 수 있습니다 logback.xml
다음은 샘플 구성 파일의 모양입니다.3개의 추가기를 정의했습니다
- stdOUT, logback에서 온 ConsoleAppender를 사용하여 모든 로그를 명령줄에 기록합니다
- (옵션) 파일입니다. 이 파일은 로그백에서 온 RollingFile Appender를 사용하여 로그를 물리 파일에 쓰고 매일 회전합니다. 그러면 매일 새로운 로그 파일을 얻을 수 있고 최대 30일의 기록을 저장할 수 있습니다
- ReportPortal Appender, 보고서 포털로 로그 전송
logback의 작업 원리를 상세히 이해하려면 Baeldung의 본 우수 안내서를 참조하십시오
레코더 추가
마지막 난제는 원본 코드에 기록기를 추가하는 것이다.테스트 클래스에 로그를 쓰고 싶다면, 다음은 Kotlin의 기본 클래스와 함수입니다.
@Test(groups = [TestGroups.ALL])
class LogbackTests {
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
// This test can be flaky and non deterministic
// Done on purpose to see variation in report portal history
@Test
fun simpleLoggingTest() {
logger.info("Example log from ${this::class.java.simpleName}")
val random = ThreadLocalRandom.current().nextInt(30000)
val limit = 20000
logMessage(random, limit)
Assert.assertTrue(random > limit, "No was greater than $limit")
}
private fun logMessage(random: Int, limit: Int) {
if (random > limit) {
logger.info("$random is > $limit")
} else {
logger.info("$random is < $limit")
}
}
기본적으로 우리는 appenders
logger를 클래스 구성원으로 추가하고 싶다
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
그리고 사용 가능한 모든 방법으로 다른 로그 단계에서 로그를 기록합니다
다음은 사용할 수 있는 로그 수준입니다.
@Test
fun differentLogLevelsTest() {
logger.trace("OMG trace level detail")
logger.debug("Minute level detail")
logger.info("This is just an info")
logger.warn("Something bad happened")
logger.error("Something catastropic happened")
}
이 테스트를 실행하면 로그가 보고 포털의 로그 메시지 부분에 표시되는 것을 볼 수 있습니다. 지정한 슬라이더 컨트롤러를 사용하여 로그에 필요한 상세한 단계를 필터할 수 있습니다
총결산
이 글에서 로그백을 우선순위로 하는 로그 프레임워크를 추가하여 보고서 포털의 보고서를 강화하는 방법을 배웠습니다
만약 당신이 이 문장이 매우 유용하다고 생각한다면 반드시 친구나 동료와 공유해야 한다.다음까지.즐거운 테스트/인코딩☮️
공구서류
다음은 참고할 수 있는 다른 링크입니다.
- Github의 grasp-reporting 재구매 에서 전체 예시 항목을 찾을 수 있습니다.
- Details about how the listeners in report portal (agent-java-testNG)
- [읽기report portal docs의 테스트 프레임워크 통합
Reference
이 문제에 관하여(보고서 포털에서logback과testng과 로그 통합을 하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/automationhacks/how-to-do-logging-integration-with-logback-and-testng-in-report-portal-4ep2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)