본문 바로가기
자동화(Automation)

Selenium_Assert&Verify

by Testengineer 2022. 8. 20.
반응형

자동화를 통해서 검증하는 방법에는 두 가지를 사용하는데요. Assert문이나 Verify문입니다.

둘의 차이는 중간에 실패시 다음 테스트 명령에 영향을 주느냐로 나뉘는 걸로 알고 있었습니다.

Assert를 사용하고 실패하면 그 테스트의 아래 코드는 실행되지 않고 바로 fail처리되고, Verify는 그 문구가 실패하더라고 그 테스트의 아래 코드의 다른 코드는 실행됩니다.

그렇다면 언제 어떻게 사용되는게 좋을지 Asserts와 Verify를 비교해보도록 하겠습니다.

 

Asserts

selenium에서 asserts는 애플리케이션에 대한 유효성 검사 또는 체크포인트로 사용합니다. 동작이 예상대로 작동하고 있는지 확실하게 검사할 수 있습니다. assert문 조건을 충족하지 않을 경우 테스트 실행이 중단됩니다. 그리고 테스트 케이스는 실패로 표시됩니다.

assertEquals() : 최소 2개의 인수로 실제결과와 예상 결과가 같은지를 비교하는 메소드입니다.

@Test
    public void test() {
		driver.get("https://www.tistory.com/");
       
		String ActualTitle = driver.getTitle();
       String ExpectedTitle = "TISTORY";
       
       Assert.assertEquals(ActualTitle, ExpectedTitle);
    }

assertNotEquals() : 실제 결과와 예상 결과를 비교해서 같지 않으면 테스트 케이스를 성공했다고 보는 메소드입니다.

@Test
	public void test2() {
		driver.get("https://www.tistory.com/");
		
		String ActualUrl = driver.getCurrentUrl();
		String ExpectedUrl = "https://www.tistory.com/m";
		
		Assert.assertNotEquals(ActualUrl, ExpectedUrl);
		
		
	}

assertTrue() : boolean 타입을 조건에 따라 반환해서 검증하는 메소드입니다. true이면 테스트 케이스를 통과했다고 봅니다.

assertFalse() : assertTrue()와 반대되는 메소드로 false값을 반환받을 때 테스트 케이스를 통과합니다.

	@Test
	public void test3() {
		driver.get("https://www.tistory.com/");
		
		String ActualUrl = driver.getCurrentUrl();
		String ExpectedUrl = "https://www.tistory.com/m";
		
		Assert.assertFalse(ActualUrl.equals(ExpectedUrl));
	}

assertNull() : 기대한 결과가 null일 때 테스트 케이스를 통과하는 메소드입니다.

assertNotnull() : 기대한 결과가 null이 아닐 때 테스트 케이스를 통과하는 메소드입니다.

	@Test
	public void test4() {
		driver.get("https://www.tistory.com/");
		
		//GNB > 피드 링크 연결 확인
		driver.findElement(By.xpath("//a[@class='#feed link_gnb']")).click();
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
	
		boolean ActualUrl = driver.getCurrentUrl().isEmpty();
		Assert.assertNotNull(ActualUrl);
		
		
	}

 

Verify(soft Assert)

assertion이 실패하면 테스트를 종료하거나 중단시키는데, 스크립트를 종료하고 싶지 않다면 사용하는 것이 verify이 입니다. 검증 상태가 참이든 거짓이든 실행상태는 중단되지 않지만, 결과값은 fail로 보내집니다. 마지막에 softAssert.assertAll()을 사용해서 확인해야 합니다.

	SoftAssert softAssert = new SoftAssert();
    
    @Test
	public void test5() {
		driver.get("https://www.tistory.com/");
		
		String ActualTitle = driver.getTitle();
		String ExpectedTitle = "TISTORY";
		
		String ActualUrl = driver.getCurrentUrl();
		String ExpectedUrl = "https://www.tistory.com/m";
		
		softAssert.assertEquals(ActualTitle, ExpectedTitle);
		softAssert.assertTrue(ActualUrl.equals(ExpectedUrl));
		
		
		driver.findElement(By.xpath("//a[@class='#feed link_gnb']")).click();
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
	
		boolean ActualUrl2 = driver.getCurrentUrl().isEmpty();
		softAssert.assertNotNull(ActualUrl2);
		
	
		softAssert.assertAll();
		
	}

중간에 softAssert.assertTrue(ActualUrl.equals(ExpectedUrl)) 문이 실패인 경우여도 아래 softAssert.assertNotNull(ActualUrl2)는 확인이 가능합니다. 그리고 콘솔에서 어느 영역이 기대 결과가 달라서 fail처리가 되었는지 확인할 수 있습니다.

 

 

참고 사이트 : https://www.browserstack.com/guide/verify-and-assert-in-selenium

 

반응형

'자동화(Automation)' 카테고리의 다른 글

Selenium_Window tab  (0) 2022.09.10
TestNG_실행파일  (0) 2022.09.05
Selenium_WebDriverManager  (0) 2022.08.10
Selenium_Wait  (0) 2022.08.05
Selenium_Scroll in Java  (0) 2022.08.01

댓글