자바 인터페이스 자동화 테스트 프레임 워 크 디자인 의 Get 요청 방법 및 테스트 상세 설명

코드 를 통 해 인터페이스 자동화 테스트 프레임 워 크 를 점차적으로 실현 하 는 디자인 과정 을 소개 하 겠 습 니 다.우선 조급해 하지 마 세 요.프레임 디자인 은 기본 적 인 구성 요 소 를 소개 할 뿐 이 고 프레임 디자인 은 생각 보다 어렵 지 않 아 한 걸음 한 걸음 따라 하면 됩 니 다.자바 코드 를 통 해 Http 의 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 요청 을 실현 하 는 과정 에 대해 서 는 여기까지 소개 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기