API
-
Rest-assured를 사용하여 간단한 Naver Open API 테스트2017.03.13
-
REST-Assured 를 사용하여 maven 프로젝트로 간단한 API 테스트2016.07.20
-
안드로이드 'getDrawable(int)' is deprecated 수정하기2016.06.12
-
Robotium API 기능 알아보기2016.02.18
Rest-assured를 사용하여 간단한 Naver Open API 테스트
Naver Open API가 방식이 바뀌어서 이전 글에서 했던 방식은 동작이 되지않는다.
하지만 사전 준비는 동일하니 아래 글을 참고하면 된다.
REST-Assured 를 사용하여 maven 프로젝트로 간단한 API 테스트
http://yonoo88.tistory.com/886
우선 네이버오픈API 페이지에 들어간다.
https://developers.naver.com/main/
들어가서 상단 Application > 애플리케이션 등록을 들어간다.
애플리케이션 이름적고 사용할 API 추가하고 환경은 저렇게 해주어도 된다.
등록하기를 누르면 아래와 같은 화면이 나오는데
Client ID 와 Client Secret 저 2개가 필요하다.
Client Secret는 우측 보기를 누르면 표시된다.
이 2개를 복사해서 코드에 넣어주어야 한다.
저 2개 값을 header 값으로 추가해주어야 한다.
String 값으로 Client ID,와 Client Secret 에 개인 값을 넣어준다.
그럼 api가 정상적으로 동작한다.
예제코드 뉴스 검색 API 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package NaverAPITest.NAPITest; import static io.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import org.junit.Before; import org.junit.Test; public class test { @Before public void apiTest() { baseURI = "http://openapi.naver.com"; // baseURI = "http://maps.googleapis.com"; port = 80; } @Test public void test() { try { String text = URLEncoder.encode("최순실", "UTF-8"); given(). header("X-Naver-Client-Id", "Client ID"). header("X-Naver-Client-Secret","Client Secret"). params( //URL 주소의 파라미터 값을 넣어줌 "query",text ).when(). /*baseURL 을 제외한 뒷부분 주소를 get하고 *body에서 해당 title 내용을 가져올 위치 지정 후 *확인할 값을 equalTo에 넣어 확인*/ get("/v1/search/news.xml").then().body("rss.channel.title", equalTo("Naver Open API - news ::'최순실'")); // get("/v1/search/news.xml").then().toString(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } | cs |
'지식메모 > 자동화' 카테고리의 다른 글
selenium 크롬 자동화 할 때 현재 실행중인 크롬에서 실행하기 (3) | 2019.01.04 |
---|---|
python과 java 에서 selenium 으로 크롬 자동화시 chromedriver.exe 프로세스 죽이기 (1) | 2018.12.30 |
Selenium 을 이용한 버거킹 영수증 설문조사 자동화 (0) | 2016.07.25 |
REST-Assured 를 사용하여 maven 프로젝트로 간단한 API 테스트 (0) | 2016.07.20 |
테스터로서 느낀 4가지 실수들 (0) | 2016.06.14 |
REST-Assured 를 사용하여 maven 프로젝트로 간단한 API 테스트
eclipse 에서 maven 프로젝트를 새로 생성한다.
create a simple.. 체크해주었다
이름을 짓고 피니쉬
src/test/java 에 새 패키지를 추가했다.
이런 식으로..
거기에 Junit Test Case 를 생성한다.
그리고 maven 프로젝트의 pom.xml에 다음과 같은 내용을 추가해준다.
https://github.com/rest-assured/rest-assured/wiki/GettingStarted
위 링크로 가면 자세히 나와있다.
우선 그냥
REST Assured
JsonPath
XmlPath
JSON Schema Validation
4가지를 추가해줬다.
4가지 추가된 모습
예제로 네이버 open api 에서 해보았다.
http://developer.naver.com/wiki/pages/SrchBook
위 링크에 들어가면 예시 URL과 함께 파라미터 값도 나와있다
1. 요청 URL (request url)#
http://openapi.naver.com/search
2. 요청 변수 (request parameter)#
2.1 기본검색#
요청 변수 | 값 | 설명 |
---|---|---|
key | string (필수) | 이용 등록을 통해 받은 key 스트링을 입력합니다. |
target | string (필수) : book | 서비스를 위해서는 무조건 지정해야 합니다. |
query | string (필수) | 검색을 원하는 질의, UTF-8 인코딩 입니다. |
display | integer : 기본값 10, 최대 100 | 검색결과 출력건수를 지정합니다. 최대 100 까지 가능합니다. |
start | integer : 기본값 1, 최대 1000 | 검색의 시작위치를 지정할 수 있습니다. 최대 1000 까지 가능합니다. |
- 샘플 URL ('삼국지'를 검색할 경우)
http://openapi.naver.com/search?key=c1b406b32dbbbbeee5f2a36ddc14067f&query=%EC%82%BC%EA%B5%AD%EC%A7%80&display=10&start=1&target=book
위 링크의 예제 URL로 들어가보면
아래와 같은 페이지가 노출되는데
여기 xml값 중 title 내용으로 확인을 해보았다.
아래와 같이 끄적끄적 한 뒤
given().when() 이런 것들은 아직 잘 모름
예시대로 해본 것 뿐
예시코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package rest.test.api.com; import static org.junit.Assert.fail; import org.junit.Before; import static io.restassured.RestAssured.*; import static io.restassured.matcher.RestAssuredMatchers.*; import static org.hamcrest.Matchers.*; import static io.restassured.module.jsv.JsonSchemaValidator.*; import org.junit.Test; public class APITest { public APITest() { baseURI = "http://openapi.naver.com"; port = 80; } @Test public void test() { given(). params( //URL 주소의 파라미터 값을 넣어줌 "key","c1b406b32dbbbbeee5f2a36ddc14067f", "query","삼국지", "display","10", "start","1", "target", "book" ).when(). /*baseURL 을 제외한 뒷부분 주소를 get하고 *body에서 해당 title 내용을 가져올 위치 지정 후 *확인할 값을 equalTo에 넣어 확인*/ get("/search").then().body("rss.channel.title", equalTo("Naver Open API - book ::'sample'")); } } | cs |
값이 일치한다면 아래처럼 정상적으로 테스트가 초록색으로 끝난다.
'지식메모 > 자동화' 카테고리의 다른 글
Rest-assured를 사용하여 간단한 Naver Open API 테스트 (0) | 2017.03.13 |
---|---|
Selenium 을 이용한 버거킹 영수증 설문조사 자동화 (0) | 2016.07.25 |
테스터로서 느낀 4가지 실수들 (0) | 2016.06.14 |
appium 에서 특정영역을 좌우로 swipe 하기 (2) | 2016.05.23 |
Appium 자동화 상하좌우 스크롤 하기 (0) | 2016.03.23 |
안드로이드 'getDrawable(int)' is deprecated 수정하기
ContextCompat 를 추가하고 나서 아래 사진처럼 뜨는데 Alt + Enter를 해주면 정상적으로 적용된다.
'지식메모 > 안드로이드 Android' 카테고리의 다른 글
안드로이드 마쉬멜로우 6.0 권한 허용 팝업 기능 추가하기 (0) | 2016.08.02 |
---|---|
안드로이드 스튜디오 단축키 (0) | 2016.07.23 |
안드로이드 스튜디오 apk versionCode 와 versionName 변경하기 (0) | 2016.06.09 |
안드로이드 스튜디오 서명된 apk 생성시 Error:(24) Error: "none" is not translated in "en" [MissingTranslation] 다국어 오류 해결 (0) | 2016.06.09 |
안드로이드 스튜디오 라이브러리 추가하기 (0) | 2016.06.03 |
Robotium API 기능 알아보기
UI Automator Viewer 를 사용하여 화면 정보 얻기
UI Automator Viewer 는 Android SDK를 설치하면 같이 설치된다. 경로는 sdk 설치된 폴더에서 sdk/tools 폴더 안에 uiautomatorviewer.bat 파일로 있다.
폰을 연결한 후 viewer를 실행시킨 뒤 왼쪽 상단 device screenshot을 클릭하면 현재화면이 나타난다. 각 구성요소를 선택하면 우측에 정보가 나타난다.
▲uiautomator viewer 실행 후 화면 정보 얻어오는 모습
이제 여기서 얻은 정보를 로보티움에 사용한다.
버튼 클릭하기
Solo.clickOnView(View view) 로 클릭
ex) solo.clickOnView(solo.getView(id)); 버튼의 resourceid를 입력하여 클릭
네이버 앱인 경우 메뉴버튼을 누르고자 할 때
메뉴버튼의 resource-id 는 header_open_slide 인걸 볼 수 있다.
그리하여 solo.clickOnView(solo.getView("header_open_slide")); 이렇게 해주면 메뉴버튼을 누를 수 있다.
텍스트를 찾아 클릭하기
solo.clickOnText(java.util.regex.Pattern.quote(String text));
해당 text를 찾아 클릭한다.
ex) solo.clickOnText(java.util.regex.Pattern.quote("확인")); 확인이 써져있는 버튼을 클릭
그리드뷰 구성에서 항목 선택하기
solo.clickInList(int line);
그리드뷰로 구성된 화면에서 resource-id가 없는 경우가 있는데 이럴 때 index 번호로 클릭할 수 있었다. 각 영역에는 index가 있었다.
예를 들면 위 사진에서 index 5번 사진을 클릭하고 싶으면 solo.clickInList(6); 을 해주었더니 클릭되었다. index+1 로 값을 넣어주면 선택이 되었다.
레이아웃 index를 사용하여 클릭하기
solo.clickOnImage(int index);
버튼은 있는데 resource-id가 없는 경우가 있었다. 그래서 찾아보니 clickOnImage로 클릭할 수가 있었는데 레이아웃 index를 사용하였다.
위 사진에서 보듯이 버튼에는 id가 없지만 레이아웃 자체에 index가 있었다. solo.clickOnImage(2) 를 해주니 클릭은 되었는데 다른 영역에도 index가 있어서 구분하여 사용하는 방법을 알아봐야할 것 같다.
스크롤 및 슬라이드 하기
solo.drag(float fromX, float toX, float fromY, float toY, int stepCount) 를 이용하여 스크롤 동작 확인
변수 설명
float fromX : 가로좌표 시작점
float toX : 가로좌표 도착점
float fromY : 세로좌표 시작점
float toY : 세로좌쵸 도착점
int stepCount : 드래그 속도(숫자가 작을수록 드래그가 빠름)
상하 스크롤의 경우 X좌표 고정 후 Y좌표로 구현 ex) solo.drag(100,100,50,350,40) 가로는 100,100위치에 고정 세로로 50부터 350까지 드래그
좌우 슬라이드일 경우 반대로 Y좌표 고정 후 X좌표로 구현
단, 해상도에 따른 정확한 좌표를 구하는 방법이 필요하다. 720x1280 기준의 좌표와 400x800 기준의 좌표는 다를 것이다. 절대좌표가 있는지는 모르겠음.
스크롤 내리기
solo.scrollDown();
드래그가 아닌 그냥 스크롤로 화면을 내려준다.
텍스트 찾기
solo.searchText(String text);
text를 찾는다. 반환 값은 boolean 값. ex) boolean text_search = solo.searchText("안녕");
solo.waitForText(String text);
특정 문자열이 나타날 때까지 기다린다. 기본값은 20초 이며 찾으면 true, 못 찾으면 false를 반환
solo.waitForText(String text, int minimumNumberOfMatches, long timeout);
minimumNumberOfMatches : 일치되는 최소 개수
timeout : 대기 시간 설정 (단위 밀리세크 1000ms =1초)
텍스트 입력하기
solo.enterText(int index,String text);
index : 텍스트 입력 창의 index값
text : 입력할 텍스트
ex) solo.enterText( 1, "안녕하세요");
solo.enterText(android.widget.EditText editText, String text);
editText : 텍스트 입력 창의 editText id 값
text : 입력할 텍스트
ex) solo.enterText((EditText)solo.getView("id"), "안녕하세요");
EditText 내 텍스트 삭제
solo.clearEditText(int index);
index : EditText의 index
'지식메모 > 자동화' 카테고리의 다른 글
테스터로서 느낀 4가지 실수들 (0) | 2016.06.14 |
---|---|
appium 에서 특정영역을 좌우로 swipe 하기 (2) | 2016.05.23 |
Appium 자동화 상하좌우 스크롤 하기 (0) | 2016.03.23 |
로보티움 튜토리얼 실행해보기 (0) | 2015.09.04 |
Selenium & Webdriver 자동화 테스트 예제 - Naver 지식인 (크롬 브라우저) (0) | 2015.01.23 |