Handledning för REST Assured API-testning

⚡ Smart sammanfattning

REST Assured etablerar sig som en Java-baserat bibliotek med öppen källkod som effektiviserar automatiseringstestning av REST API. Ramverket ger kvalitetsingenjörer möjlighet att validera komplexa JSON-svar, rubriker, statuskoder och svarstider med hjälp av ren BDD-liknande syntax med sömlös Maven-integration.

  • ⚙️ Foundation Setup: Inställd Java, Eclipseoch Maven-beroenden innan du skriver ditt första REST Assured-testskript.
  • 📐 Syntaxbehärskning: Använd mönstret Given-When-Then för att uttrycka API-förfrågningar i ett läsbart, affärsvänligt format.
  • 🔍 Detaljär validering: Extract-svarstext, statuskoder, rubriker, innehållstyp och timing genom en flytande kedja.
  • 🧩 Vägnavigering: Gå igenom kapslade JSON-värden med punktnotation liknande XPath i Selenium för exakta påståenden.
  • 🛡️ CI/CD-integration: Kombinera REST Assured med TestNG or JUnit för att bädda in API-kontroller direkt i automatiserade byggpipelines.

VISA självstudier

Vad är lugnt?

Var så säker gör att du kan testa REST API:er med java-bibliotek och integreras väl med Maven. Den har mycket effektiva matchningstekniker, så att hävda dina förväntade resultat är också ganska enkelt. Rest Assured har metoder för att hämta data från nästan varje del av begäran och svaret oavsett hur komplexa JSON-strukturerna är.

För testgemenskapen är API Automation Testing fortfarande nytt och nischat. JSON-komplexiteten håller API-testning outforskad. Men det gör det inte mindre viktigt i testprocessen. Rest Assured.io-ramverket har gjort det väldigt enkelt med grundläggande java-grunder, vilket gör det till en mycket önskvärd sak att lära sig.

Varför behöver du vara lugn?

Tänk dig att du öppnar din Google Kartvy och leta efter en plats du vill besöka. Du ser direkt restauranger i närheten, pendlingsalternativ från ledande reseleverantörer och många valmöjligheter nära till hands. Vi vet alla att dessa inte är det. Google produkter, så hur fungerar det Google lyckas visa dem? Den använder de exponerade API:erna från dessa leverantörer. Om du blir ombedd att testa den här typen av konfiguration, redan innan användargränssnittet är byggt eller under utveckling, blir testning av API:er extremt viktigt. Att testa dem upprepade gånger med olika datakombinationer gör det till ett mycket lämpligt fall för automatisering.

Tidigare använde team dynamiska språk som Groovy och Ruby för att uppnå detta, och det var utmanande. Därför utforskades inte API-testning i någon större utsträckning av funktionella testare.

Med Rest Assured blir det dock enkelt att automatisera testning av API:er och skicka enkla HTTPS-förfrågningar med användarvänliga anpassningar om man har en grundläggande bakgrund i JavaDet är bra för att förstå API-testning och integrationstestning. Rest Assured ger starkt förtroende för backend-testare medan frontend-testare kan fokusera på användargränssnittet och klientsidans operationer. Rest Assured är öppen källkod, och det ständiga tillägget av metoder och bibliotek har gjort det till ett utmärkt val för API-automation.

#1 BÄST TOTALTTesta sigma
9.8/ 10
★ ★ ★ ★ ★
Få gratis demo
PractiTest
9.5/ 10
★ ★ ★ ★ ★
Besök PractiTest
Testiny
9.3/ 10
★ ★ ★ ★ ★
Besök Testiny
bäst förTestautomationPenetrationstesterSmå och medelstora QA-team
Key Feature✓Generera automatiserade tester på några sekunder✓Centraliserad testhantering✓Manuella + automatiserade testfall
integrationer✓Jenkins, Slack, Jira✓Jira, Jenkins, Slack✓Jira, GitHub, GitLab
Pröva PåGratis demonstration14-Day Free TrialGratis demonstration
Få gratis demoBesök PractiTestBesök Testiny

REST Assured vs. Postman: Viktiga skillnader

Både REST Assured och Postman validera REST API:er, men varje API passar ett annat steg i testlivscykeln. Att välja rätt verktyg beror på teamets färdigheter, projektets omfattning och integrationsbehov.

Aspect Var säker Postman
Typ Java bibliotek för kodbaserad automatisering GUI-baserad API-klient med skriptstöd
Bästa användningsfallet Kontinuerliga integrationspipelines och regressionssviter Manuell utforskning och snabba API-kontroller
Skicklighetskrav Kärna Java kunskap som krävs Minimal kodning; användningsområden JavaSkriptavsnitt
Rapportering Integrerar med TestNG, JUnitoch Allure Inbyggda körsammanfattningar via Newman CLI

Många lag använder Postman för tidig prototypping och byt till REST Assured för automatiserad regression när API:et har konfigureratstract stabiliseras.

Hur man ställer in Rest Assured.io med Eclipse

Att konfigurera REST Assured innebär tre centrala beroenden: Java, en IDE och Maven. Följ stegen nedan för att undvika byggfel senare.

Steg 1) Installera Java. Hänvisa till detta styra

Steg 2) Ladda ner en IDE för att börja: förmörkelse

Steg 3) Installera Maven och ställ in din eclipse. Hänvisa här..

Installation Var säker

  1. Skapa ett Maven-projekt i din IDE. Vi använder IntelliJ, men du får en liknande struktur på alla IDE du använder.
  2. Öppna din POM.xml.

Projektstruktur för REST Assured Maven-installation

Projektstruktur för en REST Assured Maven-arbetsyta

För Rest Assured.io: För Java version < 9 användare:

Lägg till nedanstående beroende till din POM.xml:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

För Rest Assured.io: För Java användare från version 9+:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-all</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Felsökning:

Om du ser fel och är osäker på om beroendena laddades ner korrekt, följ dessa steg:

  1. Utför en Maven-byggning för att importera alla beroenden. Du hittar hjälp med Maven-installation på Guru99.
  2. Om felen kvarstår, kör en Maven-rensning följt av en Maven-installation. Byggnaden bör slutföras utan fel.
  3. Lägg till importerna nedan i din Java klassen och bekräfta att det inte finns några kompileringsfel.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Första enkla Var säker-skriptet

Med beroenden på plats kan du nu skriva ditt första skript. Ramverket följer en beteendedriven utvecklingsstil (BDD) som läses nästan som engelska.

Syntax:

Syntaxen för Rest Assured.io är den mest läsbara delen av ramverket, eftersom den är väldigt BDD-liknande och förståelig.

Given().
        param("x", "y").
        header("z", "w").
when().
Method().
Then().
        statusCode(XXX).
        body("x", "y", equalTo("z"));

Förklaring:

Code Förklaring
Given() Nyckelordet 'Given' låter dig ange en bakgrund. Här skickar du begäranrubriker, fråge- och sökvägsparametrar, brödtext och cookies. Detta är valfritt om dessa objekt inte behövs i begäran.
När() Nyckelordet 'när' markerar premissen för ditt scenario. Till exempel, 'när' du får/publicerar/lägger upp något, gör något annat.
Metod() Ersätt detta med någon av CRUD-operationerna (get/post/put/delete).
Sedan() Dina assert- och matchningsvillkor placeras här.

Nu när du har inställningarna och lite bakgrund till syntaxen, låt oss skapa vårt första enkla test. Det är okej om strukturen verkar ny för dig, allt eftersom du kodar vidare och tolkar varje rad kommer du att få kläm på den.

Vad ska du hämta?

Öppna din webbläsare och tryck - https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Se till att du ser något enligt nedan.

Exempel på API-svar för Rest Assured-skript

Exempel på API-svar som samlats in av REST Assured

Om du får ett felmeddelande i webbläsaren när du försöker få ett svar på begäran:

  1. Kontrollera om du använde HTTPS eller HTTP. Din webbläsare kan ha inställningar som blockerar osäkra webbplatser.
  2. Kontrollera om någon proxy eller brandvägg blockerar din webbläsare från att öppna webbplatsen.

*Anmärkningar – du använde inga rubriker här, ingen brödtext och ingen cookie. Det var en URL, och du hämtar innehåll från API:et snarare än att publicera eller uppdatera befintligt innehåll. Det gör det till ett GET-anrop. Kom ihåg detta för att förstå vårt första test bättre.

Målet med ditt test:

Målet med skriptet är att skriva ut samma utdata på din IDE-konsol som det du fick i webbläsaren genom Rest Assured.

Låt oss koda detta med stegen nedan:

Få svar Kropp

Steg 1) Skapa en klass med namnet "myFirstRestAssuredClass".

Steg 2) Skapa en metod som heter "getResponseBody".

Steg 3) I likhet med strukturen som lärdes tidigare för given, when och then, skriv följande kod:

given(). -> Inga rubriker krävs, ingen fråga eller sökvägsparam.

when(). -> Inget specifikt villkor konfigurerat.

skaffa sig('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> endast URL behöver levereras.

then(). -> Inga specifika påståenden krävs.

log().all() -> När allt svar har hämtats loggas svaret, rubrikerna och i princip allt som begäran returnerar till dig.

public static void getResponseBody(){
   given().when().get("https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1").then().log()
  .all();

}

Lägg nu märke till att URL used är långt och svårläst. Om du tittar noga kommer du att märka att tre frågeparametrar används:

  1. Kundnummer
  2. Lösenord
  3. Konto Nej

Rest Assured hjälper oss att skicka varje del (fråga, sökväg, headerparameter) separat, vilket gör koden mer läsbar och lättare att underhålla. Vi kan också parametrisera data från en extern fil efter behov.

För att använda query param går vi tillbaka till vår definition av syntaxen och ser att alla skickas som en del av given.

public static void getResponseBody(){

   given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log()
           .body();
}

**Observera att vi använde ”body” istället för ”all”; detta hjälper oss att förståtracbara svarets brödtext.

Produktion:

Hämtar svarsstatuskoden

Nästa metod vi kommer att använda i ett skript är att hämta statuskoden och lägga till en assertion för att validera den.

Steg 1) Skapa en metod som heter getResponseStatus().

Steg 2) Använd samma förfrågningsstruktur som ovan. Kopiera och klistra in det.

Steg 3) Istället för att logga det, använd 'getStatus'.Code' inbyggd metod i Rest Assured för att hämta statuskodvärdet.

Steg 4) För att bekräfta att din statuskod är 200, använd nyckelorden – assertThat().statusCode(förväntatCode).

**Obs – URL är en variabel som används för enkelhets skull. URL innehåller hela API-förfrågan URL.

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

Produktion:

Affärsbehov

En av de grundläggande reglerna för automatisering är att vi måste sätta kontrollpunkter så att testet fortsätter endast om alla villkor uppfylls. Vid API-testning är den mest grundläggande valideringen att kontrollera om statuskoden för begäran är i 2XX-format.

Den fullständiga koden, hittills:

import java.util.ArrayList;
import static io.restassured.RestAssured.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class myFirstRestAssuredClass {

   final static String url="https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1";

   public static void main(String args[]) {

      getResponseBody();
     getResponseStatus();

; }

   //This will fetch the response body as is and log it. given and when are optional here
   public static void getResponseBody(){
       given().when().get(url).then().log()
      .all();

  given().queryParam("CUSTOMER_ID","68195")
               .queryParam("PASSWORD","1234!")
               .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log().body();
   }

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

}

*Notera:

  1. 200 är ett lyckat svar för det här scenariot. Ibland kan det hända att begäran misslyckas, i vilket fall du kan använda 4XX eller 5XX. Försök att ändra statuskoden genom att ange ogiltiga parametrar och kontrollera.
  2. När vi hävdar ett villkor kommer det inte att finnas någon utskrift på konsolen om det inte finns ett fel.

Skript för att hämta olika delar av ett svar

Utöver svarstext och statuskod exponerar REST Assured även rubriker, svarstid och innehållstyp genom kedjbara ex.tractor-metoder. Nyckelordet 'extract' är avgörande för att hämta dessa specifika delar.

Sidhuvud

Rest Assured är ett väldigt enkelt språk, och det är lika enkelt att hämta rubriker. Metodnamnet är headers(). Som tidigare kommer vi att skapa en fristående metod för att göra detsamma.

public static void getResponseHeaders(){
   System.out.println("The headers in the response "+
                   get(url).then().extract()
           .headers());
}

Observera att 'given().when()' hoppas över här, och kodraden börjar från get(). Detta beror på att det inte finns någon förhandsbestämning eller verifiering som görs innan begäran utförs och ett svar ges. I sådana fall är det valfritt att använda samma sak.

Utgång:

Affärsbehov:

Ganska ofta skulle du behöva använda auktoriseringstoken eller en sessionscookie för den efterföljande begäran, och dessa uppgifter returneras oftast som rubriker i svaret.

Respons tid

För att få den tid som behövs för att hämta svaret från backend eller andra nedströmssystem, tillhandahåller Rest Assured en metod som kallas 'timeIn' med en lämplig timeUnit för att få den tid det tar att returnera svaret.

public static void getResponseTime(){
  System.out.println("The time taken to fetch the response "+get(url)
         .timeIn(TimeUnit.MILLISECONDS) + " milliseconds");
}

Produktion:

Affärsbehov:

En mycket viktig egenskap vid testning av API:er är deras svarstid, som mäter applikationens prestanda. Tiden det tar för ditt anrop kan ta mer eller mindre tid beroende på din internethastighet, API:ets prestanda vid den tidpunkten, serverbelastning och andra faktorer som påverkar tiden.

Innehållstyp

Du kan hämta innehållstypen för svaret som returneras med hjälp av metoden "contentType()".

public static void getResponseContentType(){
   System.out.println("The content type of response "+
           get(url).then().extract()
              .contentType());
}

Produktion

Affärsbehov:

Ibland är det viktigt att få fram innehållstypen för att säkerställa att det inte finns några säkerhetsluckor för hot från olika ursprung och för att bekräfta att innehållet som skickas följer API:ets standarder.

Hämta individuellt JSON-element

Utifrån det givna svaret ombeds du beräkna det totala beloppet. Du måste hämta varje belopp och summera det.

Steg:

Steg 1) Beloppsfältet finns i en array med nyckeln "satser", som i sin tur finns i listan med nyckeln "resultat".

Steg 2) Rest Assured tillhandahåller en mekanism för att nå värdena i API:et med hjälp av "path".

Steg 3) Vägen för att nå belopp är "result.statements.AMOUNT". Tänk på det som XPath i Selenium.

Steg 4) Hämta alla belopp i en samling och loopa sedan igenom alla värden för att beräkna summan.

public static void getSpecificPartOfResponseBody(){

ArrayList<String> amounts = when().get(url).then().extract().path("result.statements.AMOUNT") ;
int sumOfAll=0;
for(String a:amounts){

    System.out.println("The amount value fetched is "+a);
    sumOfAll=sumOfAll+Integer.valueOf(a);
}
System.out.println("The total amount is "+sumOfAll);

}

Obs: Eftersom beloppsvärdet är en strängdatatyp konverterar vi det till ett heltal för summering.

Produktion:

Bästa praxis för REST Assured-testautomatisering

När du väl förstår grunderna kan du genom att tillämpa disciplinerade mönster hålla din svit tillförlitlig allt eftersom API-ytan växer. Metoderna nedan hjälper team att undvika osäkra tester och underhållskostnader.

  1. Centralisera basen URL: Lagra bas-URI:n och autentiseringstoken i en enda konfigurationsklass eller egenskapsfil. Detta undviker dubbelarbete och förenklar miljöbyte.
  2. Använd specifikationer för begäran och svar: Bygg återanvändbara RequestSpecBuilder- och ResponseSpecBuilder-objekt. De minskar standardkraven när många tester delar gemensamma rubriker eller påståenden.
  3. Validera JSON-schema: Kombinera REST Assured med modulen json-schema-validator för att bekräftatract integritet. Schemakontroller fångar upp ändringar som inte fungerar innan de når nedströms konsumenter.
  4. Externalisera testdata: Lagra nyttolaster i JSON-filer eller använd dataleverantörer från TestNGHårdkodad data blir snabbt inaktuell.
  5. Kör oberoende tester: Varje test bör konfigurera och demontera sina egna data. Ordningsberoende sviter misslyckas oförutsägbart i parallella CI-körningar.
  6. Selektivt samla in loggar: Använd log().ifError() i stabila programsviter och log().all() under felsökning. Utförliga loggar långsamma CI-pipelines och döljer verkliga problem.
  7. Anslut till CI/CD: Utlösa REST Assured-sviter via Maven Surefire eller Failsafe i Jenkins, GitHub Actions eller GitLab. Kör rökkontroller på varje commit och fullständig regression över natten.

Att tidigt anamma dessa vanor gör API-automatisering till en långsiktig tillgång snarare än en ömtålig flaskhals.

Vanliga frågor

Ja. Moderna AI-assistenter som ChatGPT och GitHub Copilot kan utarbeta REST Assured-teststrukturer från API-specifikationer. Ingenjörer bör fortfarande granska den genererade koden för assertioner, datahantering och edge-fall innan de sammanfogas.

AI-drivna verktyg analyserar svarsmönster och föreslår självläkande positioner eller assertioner. De flaggar schemaavvikelser, rekommenderar refaktorering och uppdaterar testdata automatiskt, vilket minskar manuellt underhåll när API:er utvecklas ofta.

REST Assured är en Java bibliotek byggt för koddriven automatisering i CI-pipelines. Postman är en GUI-klient för manuell utforskning och snabb skriptning. Team kombinerar ofta båda under testcykeln.

REST Assured är optimerad för REST och JSON. Den kan skicka råa XML-nyttolaster för SOAP, men dedikerade verktyg som SoapUI erbjuda mer omfattande stöd för WSDL-parsning och SOAP-specifika assertions.

REST Assured passar naturligt ihop med TestNG och JUnit för assertions, lifecycle hooks och rapportering. Allure, Extent Reports och Maven Surefire lägger till visualisering och CI-integration ovanpå.

Sammanfatta detta inlägg med: