web services testing using apache http client
Αυτό το σεμινάριο αφορά την εκτέλεση διαφόρων λειτουργιών CRUD σε υπηρεσίες Web και τον έλεγχο υπηρεσιών Web χρησιμοποιώντας το Apache HTTP Client:
Σε αυτό Πλήρης σειρά δοκιμών API δοκιμών , έχουμε μάθει ότι οι Υπηρεσίες Web λειτουργούν ως μέσο επικοινωνίας μεταξύ υπολογιστών-πελατών και διακομιστών που αλληλεπιδρούν μέσω δικτύου. Εξηγήσαμε τα πάντα Δοκιμή API χρησιμοποιώντας POSTMAN στο προηγούμενο σεμινάριό μας.
Σε αυτό το άρθρο, θα δώσουμε έμφαση στον τρόπο δοκιμής των Υπηρεσιών Web χρησιμοποιώντας το Apache HTTP Client και την εκτέλεση διαφορετικών λειτουργιών CRUD στις Υπηρεσίες Web. Θα συζητηθούν επίσης οι διάφοροι τύποι πελατών REST που διατίθενται για δοκιμή backend.
πώς να ανοίξετε αρχεία bin στα Windows 8
Τι θα μάθετε:
- Τι είναι μια υπηρεσία Ιστού;
- Τι είναι ο πελάτης REST;
- CRUD Λειτουργίες που χρησιμοποιούν Apache HTTP Client
- συμπέρασμα
Τι είναι μια υπηρεσία Ιστού;
Οι Υπηρεσίες Ιστού είναι ένα μέσο επικοινωνίας μεταξύ υπολογιστών-πελατών και διακομιστών που αλληλεπιδρά μέσω δικτύου με τη βοήθεια πρωτοκόλλων HTTP. Οι υπηρεσίες Ιστού είναι γενικά API που δεν εγκαθίστανται ή αποθηκεύονται τοπικά, αλλά διατίθενται σε σύννεφα ή σε ορισμένους απομακρυσμένους διακομιστές.
Ανατρέξτε στο παρακάτω παράδειγμα για να κατανοήσετε πώς λειτουργούν οι υπηρεσίες Ιστού.
Το MakeMyTrip και το Goibibo.com είναι μερικοί από τους διάσημους ιστότοπους κρατήσεων πτήσεων και ξενοδοχείων και υπάρχουν διάφοροι διαθέσιμοι προμηθευτές πτήσεων, όπως Indigo, Air India και Etihad κ.λπ.
Εάν ένας πελάτης θέλει να κάνει κράτηση πτήσης από τη Νέα Υόρκη προς το Λονδίνο, είτε μπορεί να περιηγηθεί απευθείας στην πύλη προμηθευτή πτήσεων είτε να κάνει κράτηση μέσω τρίτων προμηθευτών. Εάν κάνουν κράτηση μέσω τρίτων προμηθευτών όπως το MakeMyTrip και άλλων ιστότοπων κρατήσεων, μέσα σε λίγα δευτερόλεπτα θα συγκρίνουν και θα εμφανίσουν αποτελέσματα παρέχοντας λεπτομέρειες πτήσης όπως χαμηλότερη τιμή, χρόνο πτήσης και πολλές άλλες πληροφορίες.
Το ερώτημα που τίθεται εδώ είναι, πώς ακριβώς, μέσα σε δευτερόλεπτα μας παρέχουν τις πληροφορίες; Τι ακριβώς κάνουν;
Από το περιβάλλον χρήστη, λαμβάνουν όλες τις απαραίτητες πληροφορίες και τις αποθηκεύουν σε ένα αρχείο JSON ή XML και καλούν τα API προμηθευτή τους με ένα διακριτικό ελέγχου ταυτότητας καθώς εκθέτουν τα API τους και σε απάντηση, ο ιστότοπος του προμηθευτή πτήσεων στέλνει πίσω JSON / XML απόκριση στο MakeMyTrip και μετατρέπουν τις ληφθείσες απαντήσεις και τις λεπτομέρειες εμφάνισης στο περιβάλλον χρήστη.
Τύποι Web Services
Υπάρχουν δύο τύποι διαδικτυακών υπηρεσιών, δηλαδή
- API σαπουνιού
- API REST
Ας δούμε τις διαφορές μεταξύ αυτών των δύο διαδικτυακών υπηρεσιών όπως αναφέρονται στην παρακάτω εικόνα.
Αρχεία JSON / XML στην υπηρεσία Web
Αφήστε το σύστημα S1 να επιστραφεί σε γλώσσα J2EE και το σύστημα S2 επιστρέφεται σε .NET ή Python και γνωρίζουμε ότι και οι δύο τεχνολογίες είναι εντελώς διαφορετικές η μία από την άλλη με θέμα ασφάλειας. Τότε πώς το σύστημα S2 μοιράζεται τον κώδικα με άλλο σύστημα;
Έτσι, το σύστημα S2 εκθέτει τα API του στο σύστημα S1 χωρίς να εκθέτει επιχειρηματική λογική και το σύστημα S2 μοιράζεται το όνομα API, τη διεύθυνση URL API, τη μορφή API και το κλειδί ελέγχου ταυτότητας / κλειδί Token για πρόσβαση στο σύστημά του. Η επικοινωνία συμβαίνει μεταξύ των δύο συστημάτων χρησιμοποιώντας είτε αρχεία JSON είτε XML.
Γιατί μόνο το αρχείο JSON / XML;
Τα αρχεία JSON / XML χρησιμοποιούνται επειδή είναι συλλέκτες δεδομένων. Οποιαδήποτε συγκεκριμένη πληροφορία αποθηκεύεται είτε σε μορφή JSON είτε σε XML, καθώς είναι ελαφριά και είναι τυπική γλώσσα για επικοινωνία μεταξύ δύο διαφορετικών διεπαφών / πλατφορμών ή συστημάτων.
Έτσι, το API χρησιμοποιείται πάντα όταν δύο ανεξάρτητα συστήματα αλληλεπιδρούν μεταξύ τους, είτε τοπικά, εντός του συστήματος είτε μέσω δικτύου.
Τι είναι ο πελάτης REST;
Το REST Client είναι ένα εργαλείο που καλεί τα API. Χρησιμοποιείται στη δοκιμή backend όταν δεν υπάρχει διεπαφή χρήστη για την κλήση των API. Μερικοί δημοφιλείς πελάτες REST είναι οι πελάτες Apache HTTP, POSTMAN, SOAP UI, Swagger και πολλά άλλα.
Εδώ, σε αυτό το άρθρο, θα συζητήσουμε μόνο τον πελάτη Apache HTTP και θα καλύψουμε άλλους διαφορετικούς πελάτες HTTP στα μελλοντικά άρθρα μας.
Http Client Setup In Eclipse
# 1) Ανοίξτε το Eclipse και δημιουργήστε ένα νέο Maven Project.
#δύο) Διαγράψτε τα εικονικά πακέτα που παρέχονται από το MAVEN, δηλαδή 'Src / main / java' και 'Src / test / java'
# 3) Μεταβείτε στο αρχείο pom.xml και καταργήστε την εξάρτηση JUnit καθώς δεν το χρειαζόμαστε.
# 4) Στη συνέχεια, απαιτούμε τη βιβλιοθήκη πελάτη HTTP, τη βιβλιοθήκη πυρήνα HTTP, τη βιβλιοθήκη JSON Parser, τη βιβλιοθήκη TestNG, τη βιβλιοθήκη δέσμευσης δεδομένων Jackson
# 5) Προσθήκη παραπάνω εξαρτήσεων (βιβλιοθήκη) στο αρχείο pom.xml.
Βιβλιοθήκη πελάτη HTTP:
Βιβλιοθήκη πυρήνα HTTP:
Βιβλιοθήκη JSON Parser:
Βιβλιοθήκη TestNG:
# 6) Κατεβάστε τις πιο πρόσφατες και σταθερές εκδόσεις. Δεν θα προσθέσουμε βάζο σεληνίου στο έργο μας, καθώς κάνουμε πλήρη δοκιμή backend. Το τελικό αρχείο pom.xml μοιάζει όπως φαίνεται στην παρακάτω εικόνα:
# 7) Στη συνέχεια, δημιουργήστε ένα πλαίσιο για τη δοκιμή API σας
προς την) Δημιουργήστε ένα πακέτο 'com.qa.config' -> Δημιουργήστε ένα αρχείο 'config.properties' και αποθηκεύστε όλες τις διευθύνσεις URL.
σι) Δημιουργήστε ένα άλλο πακέτο 'qa.com.base' -> Δημιουργήστε μια τάξη 'testBase.java' που θα είναι μια μητρική τάξη για όλες τις τάξεις. Περιέχει κοινές λειτουργίες που χρησιμοποιούνται με όλες τις μεθόδους.
ντο) Δημιουργήστε ένα άλλο πακέτο 'com.qa.client' και κατηγορία 'restClient.java'. Περιέχει κώδικα για τη λήψη κλήσεων GET, POST, DELETE, PUT.
ρε) Δημιουργήστε ένα άλλο πακέτο 'com.qa.data' και κατηγορία 'user.java' που καθορίζει διαφορετικές ιδιότητες χρήστη.
είναι) Τέλος, δημιουργήστε ένα πακέτο 'com.qa.Test' στην ενότητα 'src / test / java' και δηλώστε μια κύρια μέθοδο και λειτουργίες για να δοκιμάσετε όλες τις μεθόδους GET, PUT, POST και Delete.
στ) Η τελική δομή πλαισίου θα μοιάζει όπως φαίνεται παρακάτω:
σολ) Χρησιμοποιήστε εικονικό API που παρέχεται από αυτόν τον ιστότοπο REQ ΑΠΕ .
Μέθοδοι HTTP ή λειτουργίες CRUD
Ας δούμε διαφορετικές μεθόδους HTTP ή λειτουργίες CRUD που αυτοματοποιούμε.
Οι παρακάτω λειτουργίες αναφέρονται ως λειτουργίες CRUD:
- ντο : Δημιουργία (σημαίνει POST κλήση)
- Ρ : Ανάκτηση (σημαίνει κλήση GET)
- Ε : Ενημέρωση (σημαίνει PUT κλήση)
- ρε : Διαγραφή (σημαίνει Διαγραφή κλήσης)
Παράμετροι στις υπηρεσίες Web REST
Επικυρώστε ή υπογραμμίστε τις παρακάτω παραμέτρους στο REST Web Services:
(i) URI: Το URI είναι ο συνδυασμός της παραμέτρου URL + Path και της παραμέτρου ερωτήματος.
Παράδειγμα: http://api.com/service/account/1
Εδώ, api.com είναι η διεύθυνση URL για τον διακομιστή S2, υπηρεσία είναι ο κάτοχος. Σε αυτήν την υπηρεσία, ο κάτοχος πηγαίνει στο λογαριασμός class, και από αυτήν την κλάση λογαριασμού, καλεί το λογαριασμό μεθόδου = 1. Σε κάθε κλήση περνάμε το URI.
(ii) Ωφέλιμο φορτίο: Δεδομένα JSON / XML που τροφοδοτούμε στο σύστημα.
(iii) Κωδικός κατάστασης: Για κάθε απάντηση, λαμβάνουμε τους κωδικούς κατάστασης.
Εδώ, αναφέρονται μερικοί κωδικοί παρακάτω:
- 200: Εντάξει, όλα λειτουργούν καλά.
- 201: Δημιουργήθηκε με επιτυχία, όποτε πραγματοποιείτε κλήση POST ή δημιουργείτε μια νέα οντότητα.
- 400: Το ωφέλιμο φορτίο είναι λάθος, το τελικό URL είναι λάθος, εμφανίζει κακό αίτημα.
- 404: Ενημερώστε ή διαγράψτε μια οντότητα και αυτή η οντότητα δεν είναι διαθέσιμη, τότε έχουμε αποτέλεσμα ως αίτημα που δεν βρέθηκε.
- 500: Ας υποθέσουμε ότι ο διακομιστής S2 είναι εκτός λειτουργίας, έχουμε ένα εσωτερικό σφάλμα διακομιστή.
- 401: Σφάλμα ελέγχου ταυτότητας
Κάντε κλικ εδώ για να λάβετε όλους τους κωδικούς κατάστασης.
(iv) Κεφαλίδες: Όπως διακριτικό ελέγχου ταυτότητας, αναγνωριστικό χρήστη / κωδικός πρόσβασης, τύπος περιεχομένου κ.λπ.
ερωτήσεις και απαντήσεις συνέντευξης σχεδιασμού βάσης δεδομένων
CRUD Λειτουργίες που χρησιμοποιούν Apache HTTP Client
# 1) Λήψη κλήσης
Πώς συμπεριφέρεται η λειτουργία GET Call;
Το Get Call στέλνει το αίτημα και λαμβάνει την απάντηση. Δεν περνάμε κανένα JSON ή το ωφέλιμο φορτίο εδώ, περνάμε ένα URI, στο οποίο η διεύθυνση URL (παράμετρος διαδρομής τελικού σημείου, παράμετρος ερωτήματος) μαζί με την κεφαλίδα, εάν υπάρχει.
δηλώνει μια σειρά αντικειμένων σε java
Πριν γράψετε τον κωδικό κλήσης GET, λάβετε υπόψη τα εξής:
- Χρειάζεστε μια μέθοδο GET
- Στη συνέχεια, χρειάζεστε μια διεύθυνση URL
- Μόλις πατήσετε το κουμπί αποστολής, θα λάβετε την απάντηση. Στη συνέχεια, αποθηκεύστε την απάντηση.
- Χρειάζεστε κωδικό κατάστασης, κεφαλίδες.
Ανατρέξτε στο παρακάτω στιγμιότυπο οθόνης του προγράμματος-πελάτη POSTMAN που εμφανίζει την απόκριση κλήσης GET:
Στην τάξη restClient.java,
(Εγώ) Δημιουργήστε τη μέθοδο GET η οποία θα καλέσει τη διεύθυνση URL και θα λάβει την απάντηση με τη μορφή αντικειμένου JSON χωρίς κεφαλίδα.
package com.qa.Client; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import org.apache.http.Header; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; public class restClient { // create GET Method, which will call the URL and get the response in the form of JSON object without Header public CloseableHttpResponse getMethod(String Url) throws ClientProtocolException, IOException, JSONException{ /*Call HTTPClients class from HTTPClient library added in POM.xml. Call createDefault() method present in HTTPClients class, which will create a client connection. And this createDefault() method returns 'CloseableHttpClient' object which is an abstract class. And we are creating a reference to that abstract class */ CloseableHttpClient httpClient=HttpClients.createDefault(); /*create an object for HttpGet class, which is used for HTTP GET Request. And pass the URL which is to be loaded*/ HttpGet htttpGet = new HttpGet(Url); /*execute the HTTP GET Request, means it will hit the GET API call as we click SEND button from POSTMAN client. httpClient.execute() method returns the response 'CloseableHttpResponse' interface and store it in reference variable So the complete response is stored in CloseableHttpResponse And fetch all the details, in our test case/test method */ CloseableHttpResponse closeableHttpResponse = httpClient.execute(htttpGet); return closeableHttpResponse; } }
(ii) Δημιουργία κύριας τάξης 'getAPITest.java' στην ενότητα 'src / test / java'
Παραγωγή
# 2) POST Κλήση
Το POST Call δημιουργεί έναν λογαριασμό ή δημιουργεί μια νέα οντότητα.
Παράδειγμα - Διαβιβάστε αυτές τις λεπτομέρειες, όπως όνομα, εργασία και κεφαλίδα στο ωφέλιμο φορτίο JSON. Ο διακομιστής S2 θα συνδεθεί με κάποια βάση δεδομένων, όπως η Oracle και έχει κάποιο όνομα πίνακα που ονομάζεται Πίνακας λογαριασμού. Η μέθοδος POST θα δημιουργήσει μια καταχώριση στη βάση δεδομένων και ο διακομιστής S2 διαβιβάζει τις πληροφορίες στον πελάτη S1. Να θυμάστε ότι, η λειτουργία κλήσεων POST χρησιμοποιείται πάντα για τη δημιουργία μιας νέας οντότητας.
Στη μέθοδο POST, πρέπει να περάσουμε τη διεύθυνση URL και το ωφέλιμο φορτίο.
Πραγματοποιήστε λήψη αυτής της εξάρτησης καθώς πρέπει να μετατρέψετε την κλάση Java σε αντικείμενο Java παρά σε αντικείμενο JSON.
Στην τάξη restClient.java,
(Εγώ) Δημιουργήστε τη μέθοδο POST, η οποία θα καλέσει τη διεύθυνση URL και θα δημοσιεύσει την απάντηση.
public class restClient { public CloseableHttpResponse POST(String url,String entityString,HashMap headermap) throwsClientProtocolException, IOException{ /*Call HTTPClients class from HTTPClient library added in POM.xml and createDefault() method present in HTTPClients class, which will create a client connection and this createDefault() method returns 'CloseableHttpClient' object which is an abstract class and we are creating reference to that abstract class */ CloseableHttpClient httpClient=HttpClients.createDefault(); /*create an object for HttpPost class, which is used for HTTP POST Request and pass the URL which is to be loaded */ HttpPost htttpPost = new HttpPost(url); /*define pay load, use setEnity method present in HTTPPOST class and pass the payload entity */ htttpPost.setEntity(new StringEntity(entityString)); //Create a for loop and iterate the hashmap, and store the header for(Map.Entry entry : headermap.entrySet()){ htttpPost.addHeader(entry.getKey(),entry.getValue()); } //Execute the POST request CloseableHttpResponse closeableHttpResponse = httpClient.execute(htttpPost); return closeableHttpResponse; } }
(ii) Δημιουργήστε την κύρια τάξη 'postAPI_Test.java' στην ενότητα 'src / test / java'.
//Inherit testBase class public class postAPI_Test extends testBase { //Create global methods testBase testbase; String serviceURL; String apiURL; String URL; restClient restClient; HttpResponse closeableHttpResponse; // In before method call the properties file @BeforeMethod public void setUp() throws ClientProtocolException, IOException, JSONException{ //call the constructor of base class and execute the properties file testbase = new testBase(); serviceURL = prop.getProperty('URL'); apiURL = prop.getProperty('serviceURL'); URL = serviceURL+apiURL; } //Main method which calls the GET method @Test public void POSTAPITest() throws ClientProtocolException, IOException, JSONException{ restClient = new restClient(); //Pass the Request Header HashMap headrMap = new HashMap(); headrMap.put('Content-Type', 'application/json'); /*Use Jackson API for doing marshaling, means converting java to java object to JSON Object and vice versa Use ObjectMapper class */ ObjectMapper mapper = new ObjectMapper(); //Create object of Users class, expected users users user = new users('John','Manager'); //Convert java object 'user' to JSON Object using writeValue(), pass the path where to store the JSON file and the object to be converted */ mapper.writeValue(new File('.\data\users.json'), user ); //convert java object to json in string String userJsonString = mapper.writeValueAsString(user); System.out.println(userJsonString); //Call the POST Method closeableHttpResponse = restClient.POST(URL, userJsonString, headrMap); //Fetches status, header, and JSON response from CloseableHttpResponse //1.Fetch Status Code int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();//Get the Status code System.out.println('Status Code --->' +statusCode); //Validate the status code using Assert class Assert.assertEquals(statusCode, response_Status_Code_201,'Status is not 200'); /*2.Fetch the JSON String use EntityUtils class and call to String method, where we have to pass entity and format entity is available in closeableHttpResponse and pass UTF-8 format because we want pure string so complete JSON will be stored in a String, so we need to convert an entire string into a JSON object */ String responseString = EntityUtils.toString(closeableHttpResponse.getEntity(), 'UTF-8'); /*as we added one JSON library, from that library call JSON class and pass the response string. So this JSON object converts the string into JSON */ JSONObject responseJson = new JSONObject(responseString); System.out.println('Response JSONfrom API --->'+responseJson); /*Convert JSON to java actual User Object we are getting */ users userResObj = mapper.readValue(responseString, users.class); Assert.assertTrue(user.getName().equals(userResObj.getName())); Assert.assertTrue(user.getJob().equals(userResObj.getJob()));} }
Παραγωγή:
# 3) PUT Κλήση
Χρησιμοποιώντας τη λειτουργία κλήσης PUT, μπορείτε να δημιουργήσετε μια νέα οντότητα και να ενημερώσετε μια υπάρχουσα οντότητα.
Στην τάξη restClient.java,
(Εγώ) Δημιουργήστε τη μέθοδο PUT, η οποία θα καλέσει τη διεύθυνση URL και θα ενημερώσει την απόκριση.
public class restClient { public CloseableHttpResponse PUT(String url,String entityString,HashMap headermap) throwsClientProtocolException, IOException{ /*Call HTTPClients class from HTTPClient library added in POM.xml. Call createDefault() method present in HTTPClients class, which will create a client connection and this createDefault() method returns 'CloseableHttpClient' object which is an abstract class and we are creating reference to that abstract class*/ CloseableHttpClient httpClient=HttpClients.createDefault(); /*create an object for HttpPut class, which is used for HTTP PUT Request and pass the URL which is to be loaded */ HttpPut htttpPut = new HttpPut(url); /*define pay load, use setEnity method present in HTTPPUT class and pass the payload entity */ htttpPut.setEntity(new StringEntity(entityString)); /*create a for loop, iterate and store the header */ for(Map.Entry entry : headermap.entrySet()){ htttpPut.addHeader(entry.getKey(),entry.getValue()); } //Execute the PUT request CloseableHttpResponse closeableHttpResponse = httpClient.execute(htttpPut); return closeableHttpResponse; } }
(ii) Δημιουργήστε την κύρια τάξη 'putAPI_Test.java' στην ενότητα 'src / test / java'
//Inherit testBase class public class putAPI_Test extends testBase { //Create global methods testBase testbase; String serviceURL; String apiURL; String URL; restClient restClient; HttpResponse closeableHttpResponse; // in before method call the properties file @BeforeMethod public void setUp() throws ClientProtocolException, IOException, JSONException{ //Call the constructor of the base class and execute the properties file testbase = new testBase(); serviceURL = prop.getProperty('URL'); apiURL = prop.getProperty('serviceURL'); URL = serviceURL+apiURL; } //Main method which calls PUT method @Test public void PUTAPITest() throws ClientProtocolException, IOException, JSONException{ restClient = new restClient(); //Pass the Request Header HashMap headrMap = new HashMap(); headrMap.put('Content-Type', 'application/json'); /*use Jackson API, for doing marshaling means converting java to java object to JSON Object and vice versa, use ObjectMapper class */ ObjectMapper mapper = new ObjectMapper(); //Create object of Users class, new users users user = new users('JohnMarry Dicosta','HRManager'); /*Convert java object 'user' to JASON Object using writeValue() and pass the path where to store the JSON file and the object to be converted */ mapper.writeValue(new File('.\data\users.json'), user ); //convert java object - > JSON - >String String userJsonString = mapper.writeValueAsString(user); System.out.println(userJsonString); //Call the PUT Method closeableHttpResponse = restClient.PUT(URL, userJsonString, headrMap); /*fetch status, header, JSON response from CloseableHttpResponse Fetch Status Code */ int statusCode = closeableHttpResponse.getStatusLine().getStatusCode(); System.out.println('Status Code --->' +statusCode); //Validate the status code using Assert class Assert.assertEquals(statusCode, response_Status_Code_200,'Status is 200'); /*2.Fetch the JSON String, use EntityUtils class and call to String method where we have to pass entity and format entity is available in closeableHttpResponse and pass UTF-8 format because we want a pure string. So complete JSON will be stored in a String, so we need to convert an entire string into a JSON object */ String responseString = EntityUtils.toString(closeableHttpResponse.getEntity(), 'UTF-8'); /* From JSON library, call JSON class and pass the response string. This JSON object converts the string to JSON */ JSONObject responseJson = new JSONObject(responseString); System.out.println('Response JSONfrom API --->'+responseJson);}
Παραγωγή
# 4) Διαγραφή κλήσης
Η λειτουργία διαγραφής κλήσεων είναι απλή, δηλαδή διαγράψτε το αναγνωριστικό λογαριασμού 100 και μεταβιβάστε τις πληροφορίες σε ένα αρχείο JSON.
Στην τάξη restClient.java,
(Εγώ) Δημιουργήστε τη μέθοδο διαγραφής, η οποία θα καλέσει τη διεύθυνση URL και θα διαγράψει την εγγραφή.
public CloseableHttpResponse Delete(String url) throws ClientProtocolException, IOException{ /*Call HTTPClients class from HTTPClient library added in POM.xml and createDefault() method present in HTTPClients class, which will create a client connection and this createDefault() method returns 'CloseableHttpClient' object which is an abstract class and we are creating reference to that abstract class */ CloseableHttpClient httpClient=HttpClients.createDefault(); /*create an object for HttpDelete class, which is used for HTTP Delete Request, and pass the URL to be loaded*/ HttpDelete htttpDelete = new HttpDelete(url); //execute Delete request CloseableHttpResponse closeableHttpResponse =httpClient.execute(htttpDelete); return closeableHttpResponse; }
(ii) Δημιουργήστε την κύρια τάξη 'deleteAPI_Test.java' στην ενότητα 'src / test / java'.
public class deleteAPI_Test extends testBase { //Create global methods testBase testbase; String serviceURL; String deleteuserUrl; String URL; restClient restClient; HttpResponse closeableHttpResponse; // In before method call the properties file @BeforeMethod public void setUp() throws ClientProtocolException, IOException, JSONException{ //call the constructor of the base class and execute the properties file testbase = new testBase(); serviceURL = prop.getProperty('URL'); deleteuserUrl = prop.getProperty('deleteuser'); URL = serviceURL+deleteuserUrl; } //The Main method which calls the Delete method @Test public void deleteAPI() throws ClientProtocolException, IOException, JSONException{ restClient = new restClient(); //Method returns closeableHttpResponse type closeableHttpResponse = restClient.Delete(URL); /*fetch status code, header, JSON response from CloseableHttpResponse -Fetch Status Code */ int statusCode = closeableHttpResponse.getStatusLine().getStatusCode(); System.out.println('Status Code --->' +statusCode); //Validate the status code using Assert class Assert.assertEquals(statusCode, response_Status_Code_204,'Status is 204 No Content'); }
Παραγωγή
Πριν από την επικύρωση οποιασδήποτε απόκρισης λάβετε τη σωστή διεύθυνση URL από τον προγραμματιστή και, στη συνέχεια, ελέγξτε αν λαμβάνετε αναμενόμενη απόκριση από τον διακομιστή, προετοιμάστε δοκιμαστικές περιπτώσεις για κάθε σενάριο και τακτοποιήστε τις δοκιμαστικές περιπτώσεις με τη σειρά λειτουργικότητας.
συμπέρασμα
Σε αυτό το άρθρο, έχουμε καλύψει τον τρόπο χρήσης του Apache HTTP Client για αυτοματοποίηση POST, PUT, GET και Διαγραφή κλήσεων λεπτομερώς με παραδείγματα κώδικα. Έχουμε επίσης συζητήσει τους τύπους υπηρεσιών Ιστού και τη σημασία των αρχείων JSON / XML και γιατί χρησιμοποιούνται.
Εκπαιδευτικό πρόγραμμα PREV | Πρώτο σεμινάριο
Συνιστώμενη ανάγνωση
- Εκμάθηση Υπηρεσιών Ιστού: Στοιχεία, Αρχιτεκτονική, Τύποι & Παραδείγματα
- 15+ Tutorial SoapUI: Το καλύτερο εργαλείο δοκιμών API υπηρεσιών Ιστού
- Ερωτήσεις και απαντήσεις συνέντευξης Amazon Web Services (AWS)
- Top 20 ερωτήσεις και απαντήσεις συνέντευξης RESTful Web Services
- Κορυφαίες 25 ερωτήσεις και απαντήσεις συνέντευξης για υπηρεσίες Web Java
- Κορυφαίες ερωτήσεις και απαντήσεις συνέντευξης για υπηρεσίες Web Web (RESTful, SOAP, Ερωτήσεις ασφαλείας)
- Έλεγχος απόδοσης των Υπηρεσιών Ιστού με τη χρήση σεναρίων LoadRunner VuGen
- Οδηγός δοκιμών API: Ένας πλήρης οδηγός για αρχάριους