자바 인터페이스 자동화 테스트 프레임 워 크 디자인 의 Get 요청 방법 및 테스트 상세 설명
1.Get 요청 API 예시
브 라 우 저 는 사이트 주 소 를 엽 니 다https://reqres.in그리고 화면 을 내 려 가면 이 사이트 의 API 예 를 볼 수 있 습 니 다.사용자 의 get 인 터 페 이 스 를 보 여 줍 니 다.
이 그림 을 통 해 우 리 는 이 정 보 를 얻 을 수 있다.
1)사이트 호스트 주소:https://reqres.in/
2)사용자 전시 요청 방식 은:Get
3)인터페이스의 url 은:/api/users
4)인터페이스의 응답 상태 코드 는 200 이 고 바디 에 응답 하 는 JSON 내용 도 볼 수 있다.
위의 인터페이스 정 보 를 얻 은 후에 우 리 는 로 컬 postman 에서 테스트 를 해 보 겠 습 니 다.만약 postman 이 없다 면 postman 과 차이 가 많 지 않 은 인터페이스 수 동 테스트 를 할 수 있 는 그래 픽 인터페이스 도 구 를 설치 하 십시오.예 를 들 어 jmeter 등 입 니 다.
이 인 터 페 이 스 는 postman 수 동 테스트 를 통 해 사이트 가 제공 한 것 과 같은 결 과 를 발견 하여 이 get 이 요청 한 인터페이스 테스트 가 통과 되 었 음 을 설명 합 니 다.그렇다면 자바 코드 를 통 해 이 루어 지 려 면 어떻게 해 야 할 까?다음은 이 편의 중점 내용 이다.
2.코드 프로 세 스
앞의 글 에서 우 리 는 기초 환경의 구축 과정 을 소개 했다.여기 서 앞의 환경 에 이 어 Get 요청 의 디자인 과 테스트 과정 을 점차적으로 완성 했다.
2.1 디자인 프로필
우리 의 이 서열 은 모두 에 게 인터페이스 자동화 테스트 구 조 를 설계 하 는 목적 을 가르쳐 야 하기 때문에 우리 가 프로젝트 구 조 를 설계 하고 조직 하 는 방식 은 구조의 사 고 를 참고 해 야 한다.설정 파일 을 쓰 는 것 은 간단 합 니 다.여러 환경 에서 의 인터페이스 테스트 를 편리 하 게 테스트 하 는 것 이 의미 입 니 다.우리 가 일 하 는 과정 에서 하나의 프로젝트 는 테스트 환경,사전 발표 환경 과 온라인 생산 환경 으로 나 뉜 다.이 세 가지 환경 은 인터페이스 가 똑 같 을 것 이다.다만 서버 주소 가 다 르 기 때문에 우리 프레임 워 크 디자인 은 인터페이스 테스트 사례 를 쓰 는 것 을 지원 해 야 한다.세 가지 환경 에서 똑 같이 달 릴 수 있다.
src/main/java 에 가방 을 새로 만 듭 니 다:com.qa.config.그리고 새 가방 에 config.properties 파일 을 새로 만 듭 니 다.파일 내용 은 다음 과 같 습 니 다.
그리고 src/main/java 다음 에 가방 을 새로 만 듭 니 다.com.qa.base,TestBase.java 를 새로 만 듭 니 다.이 종 류 는 모든 인터페이스 에서 테스트 를 요청 하 는 부모 클래스 로 서 이 부모 클래스 를 계승 해 야 합 니 다.현재 우 리 는 구조 방법 을 써 서 properties 파일 을 불 러 옵 니 다.
TestBase.java 코드 는 다음 과 같 습 니 다.
package com.qa.base;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class TestBase {
public Properties prop;
//
public TestBase() {
try {
prop = new Properties();
FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+
"/src/main/java/com/qa/config/config.properties");
prop.load(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
여기 서 구조 함수 의 역할 을 복습 합 니 다.위 에서 설정 파일 을 불 러 오 는 코드 를 빈 인삼 구조 에 쓰 면 이러한 대상 을 초기 화 할 때마다 구조 함수 의 코드 를 실행 합 니 다.즉,설정 파일 을 읽 는 역할 을 수행 합 니 다.위 설정 파일 경로 가 올 바 르 게 연결 되 었 는 지 에 대해 서 는 main 방법의 종 류 를 새로 만 들 수 있 습 니 다.인쇄 문 구 를 실행 할 수 있 습 니 다:System.out.println(System.getProperty(user.dir);현재 프로젝트 구조 도 는 다음 과 같다.
2.2 Get 요청 방법 코드 구현
src/main/java 에 가방 을 새로 만 듭 니 다:com.qa.restclient,그리고 RestClient.java 파일 을 새로 만 듭 니 다.다음은 구체 적 인 코드 입 니 다.get 요청 을 실현 하고 해당 상태 코드 와 응답 헤드 정 보 를 얻 으 며 응답 주체 의 json 내용 입 니 다.
package com.qa.restclient;
import java.io.IOException;
import java.util.HashMap;
import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class RestClient {
//1. Get
public void get(String url) throws ClientProtocolException, IOException {
// HttpClient
CloseableHttpClient httpclient = HttpClients.createDefault();
// HttpGet
HttpGet httpget = new HttpGet(url);
// , postman , HttpResponse
CloseableHttpResponse httpResponse = httpclient.execute(httpget);
// Http , 200,404,500
int responseStatusCode = httpResponse.getStatusLine().getStatusCode();
System.out.println("response status code -->"+responseStatusCode);
//
String responseString = EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
// Json , Json
JSONObject responseJson = JSON.parseObject(responseString);
System.out.println("respon json from API-->" + responseJson);
// ,
Header[] headerArray = httpResponse.getAllHeaders();
// hashmap , postman Key value , HashMap
HashMap<String, String> hm = new HashMap<String, String>();
// for headerArray , hashmap
for(Header header : headerArray) {
hm.put(header.getName(), header.getValue());
}
// hashmap
System.out.println("response headers -->"+ hm);
}
}
위의 get 방법 코드 는 비교적 어 지 럽 게 쓰 여 있 으 므 로 주석 을 잘 봐 야 합 니 다.그렇지 않 으 면 층 이 뚜렷 하지 않 습 니 다.이 코드 는 반드시 나중에 재 구성 해 야 할 것 이다.우 리 는 처음에 우리 가 테스트 할 수 있 도록 먼저 이렇게 쓰 면 된다.현재 프로젝트 구조 도 는 다음 과 같다.2.3 TestNG 사례 테스트 Get 방법
src/test/java 에 가방 을 새로 만 듭 니 다:com.qa.tests,그리고 GetApiTest.java 클래스 를 새로 만 듭 니 다.TestNG 의 테스트 용례 를 써 서 우리 가 위 에 쓴 Get 요청 방법 을 테스트 합 니 다.
package com.qa.tests;
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.qa.base.TestBase;
import com.qa.restclient.RestClient;
public class GetApiTest extends TestBase{
TestBase testBase;
String host;
String url;
RestClient restClient;
@BeforeClass
public void setUp() {
testBase = new TestBase();
host = prop.getProperty("HOST");
url = host + "/api/users";
}
@Test
public void getAPITest() throws ClientProtocolException, IOException {
restClient = new RestClient();
restClient.get(url);
}
}
run as testng 을 선택 하고 실행 하 십시오.출력 결 과 는 다음 과 같 습 니 다.
[RemoteTestNG] detected TestNG version 6.14.3
response status code -->200
respon json from API-->{"per_page":3,"total":12,"data":[{"last_name":"Bluth","id":1,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","first_name":"George"},{"last_name":"Weaver","id":2,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg","first_name":"Janet"},{"last_name":"Wong","id":3,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg","first_name":"Emma"}],"page":1,"total_pages":4}
response headers -->{Transfer-Encoding=chunked, Server=cloudflare, CF-RAY=41e822894b39336d-HKG, Access-Control-Allow-Origin=*, ETag=W/"1bb-D+c3sZ5g5u/nmLPQRl1uVo2heAo", Connection=keep-alive, Set-Cookie=__cfduid=d9d93dc43c046707f916670ef491f4c8e1526917157; expires=Tue, 21-May-19 15:39:17 GMT; path=/; domain=.reqres.in; HttpOnly, Date=Mon, 21 May 2018 15:39:17 GMT, Content-Type=application/json; charset=utf-8, X-Powered-By=Express, Expect-CT=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"}
PASSED: getAPITest
다음은 콘 텐 츠 에 응답 하 는 body 의 json 콘 텐 츠 를 온라인 Josn 포맷 디 스 플레이 사이트 로 복사 합 니 다(https://www.json.cn/)효 과 를 보면 다음 과 같다.이 결 과 는 postman 과 마찬가지 로 데이터 가 일치 합 니 다.자바 코드 가 Httpclient 오픈 소스 라 이브 러 리 를 기반 으로 Get 요청 을 실현 하 는 과정 에 대해 서 는 여기까지 소개 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.