rest api testing with spring resttemplate
यह गहराई से ट्यूटोरियल बताता है कि वसंत परीक्षा के साथ रीस्ट एपीआई परीक्षण के साथ शुरुआत कैसे करें और सरल परीक्षा के साथ टेस्टएनजी:
इस लेख में, हम देखेंगे कि रेस्टटेम्पलेट और टेस्टएनजी फ्रेमवर्क के साथ रीस्ट एपीआई टेस्टिंग की शुरुआत कैसे करें।
RestTemplate और TestNG ढांचे के साथ REST एपीआई परीक्षण की खोज करने से पहले, आइए हम इसमें शामिल कुछ बुनियादी अवधारणाओं को समझते हैं।
चलो शुरू करते हैं!!
आप क्या सीखेंगे:
- बाकी क्या है?
- JSON क्या है?
- REST API परीक्षण क्या है?
- TestNG क्या है?
- स्प्रिंग रीस्ट टेम्पलेट क्या है?
- अन्य एपीआई परीक्षण कदम
- विंडोज पर TestNG टेस्ट फ्रेमवर्क की स्थापना
- पूरा TestCRUD फाइल कोड
- निष्कर्ष
- अनुशंसित पाठ
बाकी क्या है?
आजकल, REST वेब सेवाओं के निर्माण का एक काफी लोकप्रिय विकल्प बन गया है। उदाहरण के लिए , Google में कैलेंडर जैसी कई अन्य सेवाएं हैं, मानचित्र एपीआई , आदि।
आराम अर्थात। प्रतिनिधित्ववादी स्थिति में स्थानांतरण एक सॉफ्टवेयर वास्तुशिल्प शैली है। इस शैली में, बाधाओं का एक सेट परिभाषित किया गया है और इन बाधाओं को पूरा करने के लिए वेब सेवाओं का निर्माण आवश्यक है। REST स्थापत्य शैली के अनुरूप ऐसी वेब सेवाएँ RESTful Web Services के रूप में जानी जाती हैं।
'प्रतिनिधि राज्य हस्तांतरण' शब्द को सबसे पहले आगे रखा गया था रॉय फील्डिंग अपने पीएच.डी. वर्ष 2000 में शोध प्रबंध। REST का मूल विचार सर्वर-साइड ऑब्जेक्ट्स को संसाधनों के रूप में व्यवहार करना है जिन्हें बनाया या हटाया जा सकता है।
JSON क्या है?
JSON अर्थात। जावास्क्रिप्ट ऑब्जेक्ट संकेतन ब्राउज़र और सर्वर के बीच डेटा के भंडारण और आदान-प्रदान के लिए REST सेवाओं में एक बहुत ही आमतौर पर उपयोग किया जाने वाला वाक्यविन्यास है।
JSON का मुख्य लाभ इसका हल्का है और दूसरा, इसका पठनीय प्रारूप भी। डेटा कुंजी में संग्रहीत किया जाता है: मूल्य जोड़ी प्रारूप। उदाहरण के लिए, आप इस तरह से JSON प्रारूप में संग्रहीत कर्मचारी डेटा रख सकते हैं: {'name': 'Emp1 data,' वेतन ':' 3000:, 'आयु': '23 data,' id ':' 52686।}।
REST API परीक्षण क्या है?
जब हम REST API परीक्षण कहते हैं, तो यह 4 मुख्य विधियों अर्थात् POST, GET, PUT, और DELETE के साथ संसाधन पर कार्य, संपादन, पढ़ें और हटाएं क्रिया द्वारा मूल रूप से परीक्षण API है।
TestNG क्या है?
TestNG एक टेस्टिंग फ्रेमवर्क है जो JUnit और NUnit से प्रेरित है। यह जावा प्रोग्रामिंग भाषा के लिए है। TestNG में परीक्षण श्रेणियों की एक विस्तृत श्रृंखला शामिल है जैसे इकाई, कार्यात्मक, अंत-से-अंत, एकीकरण, आदि।
यह एक ओपन-सोर्स फ्रेमवर्क है जो अपाचे लाइसेंस के तहत आता है। यह एनोटेशन का एक समृद्ध सेट प्रदान करता है जो परीक्षण स्क्रिप्ट के विकास को गति देता है।
स्प्रिंग रीस्ट टेम्पलेट क्या है?
स्प्रिंग रेस्टेमप्लेट क्लास स्प्रिंग-वेब का एक हिस्सा है जिसे स्प्रिंग 3 में पेश किया गया था
रेस्टेमप्लेट क्लास HTTP आधारित रेस्टफुल वेब सेवाओं का परीक्षण करने के लिए एक बहुत ही सुविधाजनक तरीका प्रदान करता है जैसे कि HTTP तरीकों जैसे कि GET, POST, PUT, DELETE, आदि के लिए ओवरलोड तरीके प्रदान करके स्प्रिंग फ्रेमवर्क भी खुला-स्रोत है।
अन्य एपीआई परीक्षण कदम
हमें स्पष्ट समझ पाने के लिए कुछ उदाहरणों के साथ REST API परीक्षण में आमतौर पर अनुसरण किए जाने वाले चरणों को समझते हैं।
इस लेख में, मैंने एक नमूना REST API कर्मचारी सेवा से माना है यह स्रोत।
प्रारंभ में, हम POSTMAN टूल का उपयोग करके मैन्युअल रूप से चरणों का पालन करते हैं।
# 1) सबसे पहले, उस एपीआई के समापन बिंदु को जानें, जिसे आप एक्सेस करना चाहते हैं।
उदाहरण के लिए, एक नया कर्मचारी संसाधन बनाने के लिए http://dummy.restapiexample.com/api/v1/create
#दो) HTTP विधि के लिए आवश्यक होने पर हेडर और बॉडी सेट करें।
हमारे उदाहरण में, जैसा कि हम POST का उपयोग करके एक नया संसाधन बनाने की कोशिश कर रहे हैं। POST के लिए, एक अनुरोध निकाय की आवश्यकता है।
तो हम शरीर को निम्नानुसार सेट करेंगे:
'नाम': 'zozo100 z,' वेतन ':' 123 z, 'आयु': '23 z
स्वीकार करना : आवेदन / JSON और सामग्री प्रकार : आवेदन / JSON।
दोगुनी लिंक की गई सूची c ++ कोड
# 3) इस मामले में उचित HTTP विधि यानी POST सेट करें।
# 4) बाकी सेवा सर्वर के लिए एक अनुरोध भेजें।
# 5) सर्वर से प्रतिक्रिया प्राप्त करें।
POSTMAN टूल का उपयोग करके REST API कॉल
# 6) रिस्पॉन्स कोड की मदद से रिस्पॉन्स को वैरिफाई करें जैसे 200 एक सफलता के रूप में ठीक है।
# 7) यदि आपके बेंचमार्क फ़ाइल के साथ तुलना करके अपेक्षित रूप में प्रतिक्रिया बॉडी को सत्यापित करें।
अब, हमें अपने टेस्ट ऑटोमेशन सूट के लिए समान चरणों को स्वचालित करना होगा। हमें स्वचालन के लिए आवश्यक सेटअप के साथ शुरू करते हैं।
विंडोज पर TestNG टेस्ट फ्रेमवर्क की स्थापना
# 1) स्थापना
- हम परीक्षण स्क्रिप्ट विकास के लिए जावा का उपयोग करने जा रहे हैं। तो, पहले डाउनलोड करें विंडोज़ के लिए JDK इंस्टॉलर और अपनी मशीन पर जावा स्थापित करें।
- आईडीई (एकीकृत विकास पर्यावरण) : मैंने अपने स्वचालन टेस्ट सूट के विकास के लिए ग्रहण का उपयोग आईडीई के रूप में किया है। क्लिक यहां इसे डाउनलोड करने के लिए।
- TestGG के लिए ग्रहण प्लग-इन प्राप्त करें: ध्यान दें कि ग्रहण प्लग-इन के लिए TestNG चलाने के लिए जावा 1.7+ आवश्यक है। ग्रहण 4.2 और इसके बाद के संस्करण की आवश्यकता है। (संदर्भ: TestNG ) हो गया। ग्रहण में नीचे दिए गए चरणों का पालन करें:
- मदद / नया सॉफ्टवेयर स्थापित करें चुनें।
- Add -> पर क्लिक करें Http://beust.com/eclipse/ दर्ज करें
- URL के बगल में स्थित चेकबॉक्स चुनें और नेक्स्ट बटन पर क्लिक करें।
TestNG स्थापना
-
- अगली स्क्रीन पर पहुँचने तक नेक्स्ट बटन पर क्लिक करते रहें।
TestNG स्थापना अंतिम स्क्रीन
अंत में, अपाचे लाइसेंस समझौते को स्वीकार करें और स्थापना को पूरा करने के लिए फिनिश बटन पर क्लिक करें।
प्लग-इन स्थापना को प्रभावी रूप से लेने के लिए ग्रहण को पुनरारंभ करें।
- स्प्रिंग जार: अब एक और आखिरी बात, हम स्प्रिंग फ्रेमवर्क से रेस्टेमप्लेट क्लास का उपयोग करने जा रहे हैं। आप ऐसा कर सकते हैं डाउनलोड वसंत जार और इसे स्थानीय फ़ोल्डर में सहेजें, उदाहरण के लिए ,सी: / प्रोजेक्टजार
- JSON-Simple जार: हमें JSON पार्सिंग करने की आवश्यकता है। उसके लिए, हम हल्के Json-simple API का उपयोग करेंगे। तो, Json-simple-1.1.jar को C: / projectJar डाउनलोड करें
अब हमने आवश्यक स्थापनाएं पूरी कर ली हैं। तो, हम अपनी टेस्ट ऑटोमेशन परियोजना बनाते हैं।
# 2) प्रोजेक्ट सेटअप
- फ़ाइल बनाएँ -> नया -> जावा प्रोजेक्ट -> इसे नाम दें - कर्मचारीटेस्टसाइट '
- अब, नया जावा पैकेज बनाएँ com.demo :
- कॉन्फ़िगर पथ बनाएँ:
- जैसा कि आपने पहले भाग में देखा है, हमने TestNG, डाउनलोड किए गए स्प्रिंग और JSON-simple जार स्थापित किए हैं। इसलिए, अब हमें उन उपभोग करने के लिए अपनी परियोजना में निर्माण पथ जोड़ना होगा। उसके लिए, एक बनाएँ उदारीकरण फ़ोल्डर में कर्मचारीटेस्टसाइट फ़ोल्डर और अब C: / projectJar से सभी जार को कॉपी करें उदारीकरण फ़ोल्डर।
- ‘पर राइट क्लिक करें कर्मचारीटेस्टसाइट '' -> बिल्ड पथ -> बिल्ड पथ कॉन्फ़िगर करें।
- पर क्लिक करें उदारीकरण टैब।
- पर क्लिक करें लाइब्रेरी जोड़ें बटन -> TestNG का चयन करें। यह TestNG को बिल्ड पथ में जोड़ देगा।
- पर क्लिक करें जार जोड़ें बटन -> सभी जार का चयन करें। यह आपके प्रोजेक्ट बिल्ड पथ में सभी स्प्रिंग जार और JSON-simple जार जोड़ देगा।
जावा बिल्ड पाथ
अब आपकी परियोजना संरचना ग्रहण पैकेज एक्सप्लोरर में निम्नानुसार प्रदर्शित की जाएगी।
पैकेज संरचना
# 3) टेस्ट क्लास
हमें एक टेस्ट क्लास बनाने की ज़रूरत है जो CRUD (क्रिएट-रीड-अपडेट-डिलीट) ऑपरेशंस को कवर कर सके।
नई कक्षा फ़ाइल बनाएँ -> नया -> TestNG वर्ग, और इसे TestCRUD.java नाम दें
# 4) टेस्ट विधि
आइए हम अलग-अलग परीक्षण विधियाँ बनाएँ:
- addEmployee (): परीक्षण विधि का परीक्षण करने के लिए HTTP POST विधि का उपयोग करके एपीआई बनाएं।
- getEmployee (): परीक्षण विधि का परीक्षण करने के लिए HTTP जीईटी विधि का उपयोग करके एपीआई पढ़ें।
- अपडेट कर्मचारी (): HTTP PUT विधि का उपयोग करके अपडेट एपीआई का परीक्षण करने के लिए टेस्ट विधि।
- डिलीट कर्मचारी (): HTTP DELETE विधि का उपयोग करके डिलीट एपीआई का परीक्षण करने के लिए टेस्ट विधि।
आप किसी भी जावा विधि के रूप में एक परीक्षण विधि बना सकते हैं केवल TestNG के @Test एनोटेशन के साथ इसे TestNG ढांचे द्वारा परीक्षण विधि के रूप में पहचाना जाता है
उदाहरण के लिए,निम्नलिखित AddEmployee परीक्षण विधि है।
@Test public void addEmployee () {}
हमारे उदाहरण में, मैंने एक का उपयोग किया है नमूना बाकी सेवा।
अब हम POST कॉल को स्वचालित करते हैं। उसके लिए, हमें अपने कोड को उन चरणों के साथ मैप करना होगा, जिनका हमने मैन्युअल रूप से we REST API टेस्टिंग स्टेप्स ’सेक्शन में एक-एक करके अनुसरण किया था।
# 1) सबसे पहले, एपीआई के समापन बिंदु को जानें, जिसे आप एक्सेस करना चाहते हैं।
String addURI = 'http://dummy.restapiexample.com/api/v1/create';
#दो) HTTP विधि के लिए हेडर सेट करें।
HttpHeaders headers = new HttpHeaders();
// हेडर जोड़ें
headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json');
HTTP विधि के लिए बॉडी सेट करें।
String jsonBody = '{'name':'zozo100','salary':'123','age':'23'}';
// बॉडी और हेडर सेट करके एक HttpEntity ऑब्जेक्ट बनाएं।
HttpEntity entity = new HttpEntity(jsonBody, headers);
हम एक बयान में स्वचालित रूप से निम्नलिखित कदम उठाएंगे।
# 3) इस मामले में उचित HTTP विधि यानी POST सेट करें।
# 4) अनुरोध सेवा सर्वर पर भेजें।
# 5) सर्वर से प्रतिक्रिया प्राप्त करें।
RestTemplate restTemplate = new RestTemplate(); ResponseEntity response =restTemplate.postForEntity(addURI, entity, String.class);
हम प्रयोग कर रहे हैं पोस्टऑफ़निटी सर्वर पर पोस्ट विधि भेजने के लिए। हमें सर्वर ResponseEntity ऑब्जेक्ट से प्रतिक्रिया प्राप्त होती है।
# 6) रिस्पॉन्स कोड की मदद से रिस्पॉन्स को वैरिफाई करें।
Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
यहां, हम वास्तविक मान यानी प्रतिक्रिया .getStatusCode () की अपेक्षित मान HttpStatus.OK के साथ तुलना करने वाले स्टेटस कोड assertEquals विधि को सत्यापित करने के लिए TestNG के एस्टर टूल क्लास का उपयोग कर रहे हैं।
लेकिन यहां, हम एक और सत्यापन कर रहे हैं यानी सत्यापित किया जाता है कि प्रतिक्रिया निकाय में कर्मचारी जोड़ा गया है या नहीं।
Assert.assertTrue(responseBody.contains(employeeId));
हमें कर्मचारी कैसे मिला?
इसके लिए हम JSON parser API यानी Json-simple की मदद ले रहे हैं।
हम JSON पार्सर का उपयोग कर रहे हैं, क्योंकि JSON प्रारूप का उपयोग हमारे कर्मचारी टेस्ट सेवा में ग्राहक और हमारे सर्वर के बीच डेटा के आदान-प्रदान के लिए किया जाता है। जैसा कि पहले उल्लेख किया गया है, JSON डेटा में संग्रहीत है मौलिक मूल्य प्रारूप। यहां, हम प्राप्त करना चाहते हैं 'आईडी' मान।
हम प्रतिक्रिया शरीर को निम्नानुसार प्राप्त कर रहे हैं:
JSONParser parser = new JSONParser(); // Instantiate JSONParser object JSONObject jsonResponseObject = new (JSONObject) parser.parse(jsonString); //Parse jsonString i.e. Response body string in json format to JSON object String employeeId = jsonResponseObject.get('id').toString(); // Get id attribute
तो, यह सब बनाएँ विधि परीक्षण के बारे में है।
अपडेट, प्राप्त करें और तरीके हटाएँ
- अलग-अलग परीक्षण विधियां बनाएं और हेडर लागू करें।
- स्टेटस कोड का वेरिफिकेशन भी इसी तरह किया जाता है।
- मुख्य अंतर सर्वरों के लिए अनुरोध भेजने के तरीके हैं।
आप निम्न विधियों का उपयोग कर सकते हैं:
# 1) कर्मचारी को अपडेट करें : यह HTTP PUT अनुरोध है। RestTemplate PUT विधि जिसका आप उपयोग कर सकते हैं:
public void put(String url,Object request, Object... urlVariables) throws RestClientException
# 2) कर्मचारी प्राप्त करें: यह HTTP GET अनुरोध है। RestTemplate GET विधि जो आप उपयोग कर सकते हैं वह इस प्रकार है:
public ResponseEntity getForEntity(String url, Class responseType, Object... urlVariables) throws RestClientException
# 3) कर्मचारी संसाधन हटाएं: यह HTTP DELETE अनुरोध है। RestTemplate DELETE विधि जिसका आप उपयोग कर सकते हैं:
public void delete(String url, Object... urlVariables) throws RestClientException
इन विधियों के अलावा, विनिमय () और निष्पादन () उपयोगी विधियां हैं।
Xbox एक के लिए आभासी वास्तविकता हेडसेट
उदाहरण के लिए, यदि आप ध्यान दें, तो डिलीट विधि शून्य है। लेकिन अगर आप प्रतिक्रिया निकाय को सत्यापित करना चाहते हैं, तो आपको विधि निष्पादन से पहले प्रतिक्रिया की आवश्यकता होगी। उस उद्देश्य के लिए, आप Exchange () विधि का उपयोग कर सकते हैं जो ResponseEntity देता है। को देखें वसंत की रूपरेखा अधिक जानकारी के लिए।
# 5) टेस्ट रनिंग
अब, हमने अपना परीक्षण स्क्रिप्ट विकास कार्य पूरा कर लिया है, इसलिए अपने परीक्षण चलाएं। बस राइट-क्लिक करें TestCRUD.java और विकल्प चुनें ‘TestNG टेस्ट के रूप में चलाएं’ ।
यह निम्नानुसार परीक्षण निष्पादन परिणाम प्रदर्शित करेगा।
कंसोल आउटपुट
ध्यान दें: आप अपने टेस्ट सूट को परिभाषित कर सकते हैं testng.xml साथ ही फाइल करें। हमारे उदाहरण में, यह केवल एक टेस्ट स्क्रिप्ट है। लेकिन वास्तविक परिदृश्य में, यह हमेशा कई लिपियों का संग्रह होता है।
तो आपकी testg.xml फ़ाइल निम्नानुसार दिखाई देगी:
# 6) रिपोर्ट
हमने कंसोल पर परिणाम देखा है। लेकिन TestNG एक अधिक प्रस्तुत HTML प्रारूप में परीक्षण के परिणाम प्रदान करता है जिसे आपके हितधारकों के साथ साझा किया जा सकता है। खुला हुआ परीक्षण-उत्पादन -> उपलब्ध-रिपोर्ट.html ब्राउज़र में।
आप परीक्षण रिपोर्ट को निम्नानुसार देखेंगे। रिपोर्ट पृष्ठ में, आप टेस्ट नाम को TestCRUD के रूप में देख सकते हैं, कई पारित किए गए परीक्षण यानी 4, नंबर ऑफ स्किप्ड और असफल जो इस मामले में 0 हैं। यह प्रत्येक परीक्षण विधि के निष्पादन के लिए आवश्यक कुल समय को भी दर्शाता है।
एचटीएमएल प्रारूप में परीक्षा परिणाम
पूरा TestCRUD फाइल कोड
package com.demo; import java.io.IOException; import java.text.ParseException; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.testng.log4testng.Logger; /** * This test class has test methods for CRUD actions on REST API * REST Service http://dummy.restapiexample.com/api * * It has test methods for Create , Edit , Get and Delete Employee items * https://docs.spring.io/spring-framework/docs/current/javadoc- api/org/springframework/web/client/RestTemplate.html * https://docs.spring.io/autorepo/docs/spring/3.2.3.RELEASE/javadoc- api/org/springframework/web/client/RestTemplate.html * @author * */ public class TestCRUD { private String responseBody; public String responseBodyPOST; final static Logger logger = Logger.getLogger(TestCRUD.class); //RESTTemplate Object private RestTemplate restTemplate; //Employee ID private String employeeId; // Create Response Entity - Stores HTTPStatus Code, Response Body, etc private ResponseEntity response; @BeforeTest public void beforeTest() throws IOException, ParseException { logger.info('Setting up prerequisite for test execution'); logger.info('Creating RestTemplate object before tests'); this.restTemplate = new RestTemplate(); } /** * Test Method to add employee using HTTP POST request * * Verifies POST action Status Code * * @throws IOException * @throws ParseException */ @Test public void addEmployee() throws IOException, ParseException { String addURI = 'http://dummy.restapiexample.com/api/v1/create'; HttpHeaders headers = new HttpHeaders(); headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json'); logger.info('Add URL :'+addURI); String jsonBody = '{'name':'zozo100','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntity entity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee response = this.restTemplate.postForEntity(addURI, entity, String.class); responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.assertTrue(responseBody.contains(employeeId)); // System.out.println(propertyFile.get('EmployeeAddResBody')); // Check if the status code is 201 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee is Added successfully employeeId:'+employeeId); } /** * Method to get Employee ID from REsponse body * I have used Json Simple API for Parsing the JSON object * * @param json * @return */ public static String getEmpIdFromResponse(String json) { JSONParser parser = new JSONParser(); JSONObject jsonResponseObject = new JSONObject(); Object obj = new Object(); try { obj = parser.parse(json); } catch (org.json.simple.parser.ParseException e) { e.printStackTrace(); } jsonResponseObject = (JSONObject) obj; String id = jsonResponseObject.get('id').toString(); return id; } /** * Test Method to Update employee using HTTP PUT request * * Verifies PUT action Status Code * Verifies Updated Name exists in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'addEmployee', enabled = true) public void updateEmployee() throws IOException, ParseException { String updateURI = 'http://dummy.restapiexample.com/api/v1/update/'+employeeId; logger.info('Update URL :'+updateURI); String jsonBody = responseBodyPOST; jsonBody = jsonBody.replace('zozo100', 'update_zozo100'); HttpHeaders headers = new HttpHeaders(); headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json'); HttpEntity entity = new HttpEntity(jsonBody, headers); //PUT Method to Update the existing Employee //NOTE that I have Not used restTemplate.put as it's void and we need response for verification response = restTemplate.exchange(updateURI, HttpMethod.PUT, entity, String.class); responseBody = response.getBody().toString(); System.out.println('Update Response Body :'+responseBody); // Check if the updated Employee is present in the response body. Assert.assertTrue(responseBody.contains('update_zozo100')); // Check if the status code is 200 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee Name is Updated successfully employeeId:'+employeeId); } /** * Test Method to Get employee using HTTP GET request * * Verifies GET action Status Code * Verifies Name exists in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'updateEmployee', enabled = true) void getEmployee() throws IOException, ParseException { String getURI = 'http://dummy.restapiexample.com/api/v1/employee/'+this.employeeId; logger.info('Get URL :'+getURI); HttpHeaders headers = new HttpHeaders(); HttpEntity entity = new HttpEntity(headers); //GET Method to Get existing Employee response = restTemplate.getForEntity(getURI,String.class); // Write response to file responseBody = response.getBody().toString(); //Suppressing for log diffs System.out.println('GET Response Body :'+responseBody); // Check if the added Employee ID is present in the response body. Assert.assertTrue(responseBody.contains('update_zozo100')); // Check if the status code is 200 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee is retrieved successfully employeeId:'+employeeId); } /** * Test Method to Delete employee using HTTP DELETE request * * Verifies DELETE action Status Code * Verifies Success Message Text in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'getEmployee', enabled = true) public void deleteEmployee() throws IOException, ParseException { String delURI = 'http://dummy.restapiexample.com/api/v1/delete/'+this.employeeId; HttpHeaders headers = new HttpHeaders(); HttpEntity entity = new HttpEntity(headers); //DELETE Method to Delete existing Employee response = restTemplate.exchange(delURI, HttpMethod.DELETE, entity, String.class); // Check if the status code is 204 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); responseBody = response.getBody(); Assert.assertEquals(getMessageFromResponse(responseBody), 'successfully! deleted Records'); logger.info('Employee is Deleted successfully employeeId:'+employeeId); } /** * Gets 'text' key value from Response body text for verification * I have used Json Simple API for Parsing the JSON object * * @param json * @return text string */ public static String getMessageFromResponse(String json) { String successMessageText = null; try { JSONParser parser = new JSONParser(); JSONObject jsonResponseObject = new JSONObject(); jsonResponseObject = (JSONObject) (parser.parse(json)); String successMessage = jsonResponseObject.get('success').toString(); jsonResponseObject = (JSONObject) (parser.parse(successMessage)); successMessageText = jsonResponseObject.get('text').toString(); } catch (org.json.simple.parser.ParseException e) { e.printStackTrace(); } return successMessageText; } @AfterTest public void afterTest() { logger.info('Clean up after test execution'); logger.info('Creating RestTemplate object as Null'); this.restTemplate = new RestTemplate(); } }
निष्कर्ष
हमने इस लेख के सीखने के परिणामों को संक्षेप में प्रस्तुत किया है। हमने आरईएसटी एपीआई टेस्ट ऑटोमेशन फ्रेमवर्क स्थापित करने के लिए शुरुआत से सभी चरणों को देखा।
इसमें हमने निम्नलिखित सीखा:
- परीक्षण स्वचालन के लिए, हमने जावा को एक प्रोग्रामिंग भाषा के रूप में चुना।
- हमने TestNG को टेस्ट स्क्रिप्ट बनाने के लिए टेस्ट फ्रेमवर्क के रूप में चुना, जहाँ हमने @Test जैसे TestNG एनोटेशन का सेवन किया।
- सर्वर पर वास्तविक HTTP अनुरोध भेजने के लिए, हमने स्प्रिंग फ्रेमवर्क RestTemplate वर्ग का उपभोग किया।
- इन APIs का उपभोग करने के लिए, हमने TestNG की स्थापना की, पार्सर एपीआई के लिए स्प्रिंग जार और Json-simple जार डाउनलोड किया।
- अंत में, हमने टेस्ट क्लास को अंजाम दिया और कंसोल पर परिणाम के साथ-साथ अधिक प्रस्तुत करने योग्य और अधिक पढ़ने योग्य HTML प्रारूप में भी देखा।
संक्षेप में, इस लेख में, हमने सीखा कि स्प्रिंग रेस्टेमप्लेट के साथ रीस्ट एपीआई टेस्ट स्वचालन के साथ कैसे शुरुआत करें। हमने सभी आवश्यक सॉफ़्टवेयर, प्रोजेक्ट सेटअप, टेस्ट स्क्रिप्ट विकास की स्थापना से लेकर परीक्षण निष्पादन तक की शुरुआत और उत्पन्न रिपोर्टों को देखने के लिए अपने परीक्षण स्वचालन ढांचे की स्थापना को कवर किया।
यह किसी भी स्वचालन QA के लिए आपके परीक्षण स्वचालन ढांचे के साथ आरंभ करने के लिए काफी पर्याप्त है। लेकिन, हमने प्रत्येक से केवल आवश्यक भागों को देखा है, उदाहरण के लिए, हमने टेस्टटेग इंस्टॉलेशन, टेस्ट पद्धति का उपयोग @ टेस्ट एनोटेशन, रिपोर्ट का उपयोग किया है। हालाँकि, TestNG कई और सुविधाएँ प्रदान करता है जैसे DataProvider के लिए डेटा-संचालित परीक्षण, आदि।
क्या आप स्प्रिंग रेस्टप्लेट के साथ REST API टेस्ट ऑटोमेशन शुरू करने के लिए तैयार हैं?
अनुशंसित पाठ
- 2021 में 10 सर्वश्रेष्ठ एपीआई परीक्षण उपकरण (SOAP और REST API परीक्षण उपकरण)
- सर्वश्रेष्ठ सॉफ्टवेयर परीक्षण उपकरण 2021 (क्यूए टेस्ट स्वचालन उपकरण)
- परीक्षण प्राइमर eBook डाउनलोड
- शीर्ष 20 सबसे महत्वपूर्ण एपीआई परीक्षण साक्षात्कार प्रश्न और उत्तर
- Katalon स्टूडियो के साथ एपीआई परीक्षण सरल बनाना
- Parasoft SOAtest ट्यूटोरियल: स्क्रिप्टलेस एपीआई टेस्टिंग टूल
- एचपी लोडरनर ट्यूटोरियल के साथ लोड परीक्षण
- डेस्कटॉप, क्लाइंट सर्वर परीक्षण और वेब परीक्षण के बीच अंतर