2013-10-23 3 views
2

셀렌으로 웹 테스트를 작성한 후에는 이제 REST API를 테스트해야한다. Selenium을 사용하여 브라우저를 구동하고 API URL을 실행할 때 결과가 웹 브라우저에 표시되는지 확인하고 싶습니다. 내 API URL이 HTTP 모드이고 답변이 JSON 형식입니다.셀레늄 웹 테스트와 REST API 테스트하기

내가 찾은 나머지-보장 : https://code.google.com/p/rest-assured/ 그러나 점프하고 더 나은 대안이 있다면 나는 내 셀레늄 테스트와 통합 쉽게 알고 좋아하고 것 그것을 사용하기 전에.

감사

답변

1
당신은 결과가 DOM에서 사용할 수있게 기다릴 셀레늄을 강제 할 수

. 그래서 예, Selenium은 특히 결과가 페이지에 표시된 HTML을 업데이트하는 경우 REST 호출을 테스트하는 데 사용하는 좋은 도구입니다.

WebDriver driver = new FirefoxDriver(); 
driver.get("http://somedomain/url_that_delays_loading"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement"))); 

examples 이상 다음 페이지를 참조하십시오.

+1

카일, 답변 주셔서 감사합니다.이 스크립트는 요소의 존재 여부 만 확인하고 있지만 웹 페이지의 콘텐츠를 확인하고 API 호출의 응답과 비교하는 방법은 무엇입니까? 건배. Zied – Ziwdigforbugs

+0

@Ziwdigforbugs API 호출이 완료되면 HTML을 업데이트하십시오. Selenium을 사용하여 HTML 요소를 검사하십시오. 더 정교한 JSON 응답을 확인하는 것이 필요한 경우에는 Selenium 이외의 도구를 직접 사용하십시오. – KyleM

1

REST API를 WebDriver에 통합 할 수 있습니다. 나는 이것에 종사하고 매력 같이 작동한다.

서비스 레이어 기능 : 자바 객체로이 데이터를 읽기 위해서는

/** 
* This function will retrieve the child nodes under the current TG element 
* @param webDriver The WebDriver reference 
* @param element The Web Element whose child nodes are to be retrieved 
* @return List<WebElement> The list of Child Elements for element. 
* @throws Exception 
*/ 
public static List<WebElement> getChildElements(WebElement element,WebDriver webDriver) throws Exception {   
    try{ 
     List<WebElement> elementChilds = element.findElements(By.xpath(GlobalTreeGridValues.TreeGrid.TG_Shared_NextLevelXPath)); 
     System.out.println("Avaialble child nodes for the current node are "+ element.findElements(By.xpath(GlobalTreeGridValues.TreeGrid.TG_Shared_NextLevelXPath)).size()); 
     return elementChilds; 
     }catch(ElementNotFoundException ex){ 
     System.out.println("Error in getting the XPath "+ ex.getMessage()); 
     return null; 
    }  
} 

, 우리는 단지 HttpClient를 등

읽기 대한 추가 정보를 원하시면 http://code.google.com/p/json-io/ 같은 JSON 포매터 및 라이브러리를 필요로한다!

0

나는 Selenium이 UI 테스트에 더 적합하다고 생각한다. REST API를 테스트 할 때는 내 의견으로는 더 나은 도구가 있습니다. RestCase, Runscope 또는 vRest과 같은 REST API Testing에 대한 도구를 사용할 수 있습니다. 우편 배달부 등 많은 휴식 클라이언트가 있습니다.

+1

Selenium도 AJAX 또는 HTTP 요청을 보낼 수 있어야합니다. 이것은 질문에 답하지 않고 오히려 대체 도구/라이브러리를 제안하고 있습니다. – prasun

+0

그는 대안을 요청했습니다. 물론 동의합니다. 셀레늄은 물론 전화를 걸 수 있습니다. 그러나 적절한 기능적 API 테스트에 사용할 수있는 도구가 훨씬 더 있습니다. – mansilladev

0

Krishnam에 의해 논의 된 바와 같이 이것은 httpclient 또는 이와 유사한 방법으로 절대 수행 할 수 있습니다. API를 호출 한 후 읽기 검증받을 웹 사이트의 UI 테스트를 실행하는

  1. 능력을 : 나는 그것이 매우 유용 다음과 같은 이유로, 별도의 API 테스트 도구가 아니라 셀레늄과 HttpClient를 API 코드의 조합을 활용 발견 내용이 서버에 데이터를 밀어 API 호출을 실행하는
  2. 능력을 반환하고, 셀레늄 UI 코드를 실행하는 개체를 볼 수있는 JSON 시리얼 라이저를 사용의 용이성 쉽게 API에서
  3. 을 반환
  4. 웹 사이트에 결과를 확인하기 위해
  5. 확인시 사용자 지정 사항을 수행 할 수있는 기능. 필자는 셀렌 스위트에 데이터베이스 액세스 레이어를 작성하여 값이 데이터베이스에 올바르게 저장되었는지 테스트했습니다.
  6. 경우에 따라 API를 실행하려면 가끔씩 엄청난 양의 설정 (또는 잠재적 조롱)이 필요합니다. 필자가 테스트 한 시스템에서이 설정은 API 명령을 실행하기 전에 웹 사이트에서 Selenium webdriver 명령을 사용하는 데 너무 어려움없이 수행 할 수 있습니다. (예를 들어 내 시스템에서 사용자 생성 및 계정 활성화는 현재 API를 통해 사용할 수 없으며 데이터베이스를 조롱하거나 설정하는 악몽입니다.)

은 분명히 테스트중인 모든 시스템은 다르지만, 이들이 당신이 당신을위한 올바른 접근 방식인지 여부를 확인하는 데 도움 수있는 혜택의 일부입니다.