Det är en tunn linje mellan att välja ett applikationsprogrammeringsgränssnitt (API) och att bestämma om du kan arbeta med det eller inte. De flesta REST API:er har en generisk arkitektur och leder en gemensam sökväg för begäran. Men vissa API:er där ute avviker från standarden. Följaktligen blir de svåra att använda.
Innan du bygger hela din programvara på ett API måste du alltså utföra kvalitetskontroller och säkerställa att den fungerar bra. Så vad är API-testning, och hur kan du testa ett API?
Vad är API-testning?
API-testning involverar den första bedömningen av ett API:s funktionalitet, säkerhet, skalbarhet, hastighet och mer för att se om det är idealiskt för programmet som vill använda det. Men ytligt sett kan det innebära att testa för att se om det skickar lämpliga svar när du gör förfrågningar genom dess olika slutpunkter.
Beroende på dess struktur, när du testar ett API, kommer du att göra förfrågningar (Hämta, Lägg upp, Uppdatera eller Ta bort) till dess relevanta slutpunkter. Det finns många mätvärden att kontrollera under API-testning. Men på en nybörjarnivå vill du validera ett API:s integritet från dess statuskod och säkerställa att det hämtar och accepterar korrekt data.
För detta ändamål, som alla webbförfrågningar, kan ett API returnera statuskoden 200, 400 eller 500 eller till och med andra.
De flesta API:er använder JSON-svar för att tjäna sina nyttolaster. Beroende på målet kan andra acceptera och svara med XML-, multipart- eller HTML-nyttolaster.
Hur man testar ett API med Python och JavaScript
Även om det finns många API-testverktyg för grafiskt användargränssnitt (GUI) på internet, kan du bedöma ett API mer kritiskt med skrivna skript.
Ett API berättar i sin dokumentation vilken typ av förfrågningar det tillåter och ger relevanta slutpunkter till dem. Så du kan ta och testa dem med lämpliga förfrågningsmetoder.
Till skillnad från den faktiska produktionsfasen är API-testning grov. Så du behöver inte så mycket specificitet som du skulle när du kör API:et för produktion. Även om det finns olika typer av API-tester kommer vi att fokusera mer på svarsvalideringstester i den här artikeln.
Vi kommer att testa ett falskt butiks-API i den här handledningen med hjälp av JavaScript hämta och Python’s förfrågningar bibliotek. Medan vi gör detta kommer vi att testa slutpunkter för att hämta, lägga upp, uppdatera och ta bort data.
Hur man testar en Get API Endpoint med JavaScript
Som du skulle använda det i produktionen kan du testa ett API i JavaScript med antingen Axios eller den hämta metod.
För att få svarsstatus från API:t med hjälp av hämta:
fetch('https://fakestoreapi.com/products',
).then(res =>{console.log(res)
})
Ovanstående begäran returnerar statusen 200 om det är ett giltigt svar. När du väl har gjort en framgångsrik begäran kan du begära realtidsdata från API:et.
Låt oss hämta data från detta API:
fetch('https://fakestoreapi.com/products',
).then(res =>{
if (res.ok){
return res.json()
}
}).then(response=>{
console.log(response)
}).catch(err => console.log(err))
Svaret på ovanstående hämtningskod ser ut så här:
För att få priset på alla produkter, till exempel, kan du använda Karta fungera:
fetch('https://fakestoreapi.com/products',
).then(res =>{
if (res.ok){
return res.json()
}
}).then(response=>{
response.map(data =>{
console.log(data.price)
})
// console.log(response)
}).catch(err => console.log(err))
Ovanstående loggar följande utdata:
Testar en Get Endpoint med Python
Som nämnts tidigare använder Python också förfrågningar bibliotek för att få åtkomst till ett API:s data.
Så här kontrollerar du statusen för svaret i det här fallet:
import requests
data = requests.get('https://fakestoreapi.com/products')
print(data.status_code)
Skogsavverkning data som vi gjorde ovan returnerar en motsvarande status. Det är dock 200 i det här fallet.
Låt oss nu få samma data med Python som vi gjorde när vi använde JavaScript:
import requests
data = requests.get('https://fakestoreapi.com/products')
myData = data.json()
print(myData)
Resultatet av ovanstående ser ut så här:
Du kan få specifik data med hjälp av for-loopen.
För att få produktpriser, till exempel:
import requests
data = requests.get('https://fakestoreapi.com/products')
myData = data.json()
indexes = 0
for i in myData:
goods = myData[indexes]
indexes +=1
print(goods["price"])
Så här ser utgången ut:
Testa en Post Endpoint med JavaScript
Efter att ha testat och sett att Skaffa sig begäran fungerar, beroende på ditt mål och vad API erbjuder, kanske du vill kontrollera om du kan infoga data i den också.
I motsats till hur du gör en Skaffa sig begäran, a Posta begäran accepterar en nyttolast. Dessutom måste du ange att det är en postbegäran:
// Specify the payload
let payload = {
title: 'new product',
price: 13.5,
description: 'test description',
image: '',
category: 'electronic'
}fetch('https://fakestoreapi.com/products',
{
method: "Post",
headers:{
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) //convert the payload to JSON
}
).then(res =>{
if (res.ok){
console.log(res.status)
return res.json()
}
}).then(response => {
console.log(response)
}).catch(err => console.log(err))
Ovanstående kod loggar svarsstatuskoden och den nya informationen som infogas när du kör den. Detta talar om för dig om din förfrågan gick igenom eller inte. Vanligtvis, om statuskoden är 200, har ditt API en giltig slutpunkt som returnerar lämpligt svar.
Testar postförfrågan med Python
Du kan också testa en post-slutpunkt för ett API med Pythons requests.post. Som du gjorde när du använde JavaScript hämtamåste du ange nyttolasten här också:
import requests
payload = {
'title': 'new product',
'price': 13.5,
'description': 'test description',
'image': '',
'category': 'electronic'
}
Posted = requests.post('https://fakestoreapi.com/products',
data = payload
)
print(Posted.status_code)
print(Posted.json())
Liksom JavaScript loggar ovanstående Python-kod också svarsstatuskoden och de nya data som anges i nyttolast.
Testa Put Endpoints
Att uppdatera API-data tar samma process som att publicera och hämta dem på båda språken.
För att göra detta med hjälp av JavaScript hämta, du behöver bara byta ut Posta med Sätta:
// Specify the payload
let payload = {
title: 'new product',
price: 13.5,
description: 'test description',
image: '',
category: 'electronic'
}fetch('https://fakestoreapi.com/products/19',
{
method: "Put",
headers:{
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) //convert the payload into JSON
}
).then(res =>{
if (res.ok){
console.log(res.status)
return res.json()
}
}).then(response => {
console.log(response)
}).catch(err => console.log(err))
Om du är uppmärksam på API-slutpunkten kommer du att se att den inkluderar produkt-ID den här gången. Så här vet API:t vilken data du vill uppdatera i det här fallet.
Icke desto mindre kan vissa API:er använda andra metoder för att skapa sina slutpunkter. Så det är ingen standard.
För att testa API-datauppdatering med Python använder du requests.put istället:
import requests
payload = {
'title': 'new product',
'price': 13.5,
'description': 'test description',
'image': '',
'category': 'electronic'
}
Posted = requests.put('https://fakestoreapi.com/products/19',
data = payload
)
print(Posted.status_code)
print(Posted.json())
Ovanstående exempel, om de lyckas, infoga den nya datan i position 19 som indikeras av API-slutpunkten.
Testar raderingsförfrågan
Att ta bort data från ett API är lika enkelt som att göra en Get-förfrågan. Det beror på att du, till skillnad från Post and Put, inte behöver ange någon nyttolast. Allt du behöver är raderingsändpunkten.
Vårt valda API här använder produkt-ID:t för att spåra dess data. Så det är enkelt att ta bort en produkt:
fetch('https://fakestoreapi.com/products/19',
{
method: "Delete",
headers:{
'Content-Type': 'application/json'
}
}
).then(res =>{
if (res.ok){
console.log(res.status)
return res.json()
}
}).then(response => {
console.log(response)
}).catch(err => console.log(err))
Du behöver bara några rader kod för att uppnå samma sak med Python:
import requests
Posted = requests.delete('https://fakestoreapi.com/products/19',
)
print(Posted.status_code)
print(Posted.json())
Båda exemplen ovan loggar svarsstatuskoden och data som hör till det efterfrågade ID:t (19 i detta fall).
Är dessa testmetoder generiska?
Även om vi bara har fokuserat på ett enda API i det här inlägget, är metoderna som används för att testa CRUD-slutpunkterna inte annorlunda när det gäller andra API:er. Den enda skillnaden kan naturligtvis vara i reglerna kring varje API-struktur och riktlinjer för att begära data. När du väl har dechiffrerat dessa för ett valt API kan du sedan använda lämplig metod, som beskrivs här, för att testa dess motsvarande slutpunkter.
Eftersom varje API har regler för att ansluta till det, så under testning kan vissa tillhandahålla ytterligare parametrar som du kan inkludera i dina förfrågningsrubriker. Sådana parametrar inkluderar vanligtvis en åtkomsttoken eller andra som tillhandahålls i dokumentationen.
Om författaren
Idowu Omisola (123 artiklar publicerade)
Idowu brinner för allt smart teknik och produktivitet. I hans free tid, han leker med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig loss från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.
Mer från Idowu Omisola
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
