API Request Step
REST API'lere istek gönderin, response'ları doğrulayın. UI testleriyle API testlerini aynı senaryoda birleştirin.
API Request Nedir?
API Request Step, test akışı içinde REST API'lere HTTP istekleri göndermenizi sağlar. UI testleriyle birlikte kullanarak end-to-end senaryolar oluşturabilirsiniz.
UI + API
Aynı testte ikisini birleştir
Response Assertion
Status, body, header kontrolü
Data Extraction
Response'dan veri çek, kullan
Nasıl Kullanılır?
API Requests Menüsü
Sol menüdeki API Requests bölümünde oluşturduğunuz tüm request'leri testcase'lerinize step olarak ekleyebilirsiniz. Bir kez tanımla, her yerde kullan!
Adım Adım Kullanım
Request'i Test Et
Sağ panelde Send butonuna tıklayın. Request çalışacak ve response sağ panelde görüntülenecek.
Response'dan Veri Çek
Dönen response'da parametrik olarak kullanmak istediğiniz veriye tıklayın. JSONPath otomatik olarak oluşturulacak ve Global Parameter olarak kaydedilecektir.
Örnek: Response'daki token'a tıkladınızda
$.data.token → auth_token olarak kaydedilir
Parametreyi Kullan
Kaydettiğiniz parametreyi süslü parantez içinde istediğiniz yerde kullanabilirsiniz:
{{auth_token}}
{{user_id}}
{{order_id}}
Parametrik Request Oluştur
Request'lerinizi de parametrik yapabilirsiniz! Önceki step'lerde kaydettiğiniz Global Parameter'ları süslü parantez içinde verin:
URL'de:
{{base_url}}/api/orders/{{order_id}}
Header'da:
Authorization: Bearer {{auth_token}}
Body'de:
{"userId": "{{user_id}}"}
Not: Tüm {{param}} değerleri test
koşmadan hemen önce gerçek değerleriyle replace edilir. Böylece dinamik ve yeniden kullanılabilir
request'ler oluşturabilirsiniz.
Ne Zaman Kullanmalısın?
Kullan ✓
- • Test öncesi data setup (kullanıcı, sipariş oluştur)
- • Login API'den token alma
- • UI işlemini API'den doğrulama
- • Backend state kontrolü
- • Webhook/callback test
- • Test sonrası cleanup
Kullanma ✗
- • Sadece UI testi yeterliyse
- • GraphQL (şimdilik REST only)
- • WebSocket bağlantıları
- • Dosya indirme (Python kullan)
HTTP Metodları
| Metod | Kullanım | Body |
|---|---|---|
| GET | Veri okuma, listeleme | Yok |
| POST | Yeni kayıt oluşturma | JSON / Form |
| PUT | Tam güncelleme | JSON / Form |
| PATCH | Kısmi güncelleme | JSON / Form |
| DELETE | Kayıt silme | Genelde yok |
Gerçek Senaryo Örnekleri
Senaryo 1: Login API'den Token Alma
UI login yerine API ile hızlı authentication
🎯 Kullanım Durumu: Her testte UI'dan login yapmak yavaş. API ile token alıp localStorage'a koyarak login bypass yapabilirsin.
URL
{{base_url}}/api/auth/login
Headers
Content-Type: application/json
Request Body
{
"email": "{{test_email}}",
"password": "{{test_password}}"
}
Response (örnek)
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": { "id": 123, "name": "Test User" }
}
}
Sonraki steplerde kullanmak için: JSONPath ile token'ı çıkar:
$.data.token → Global Parameter'a kaydet
Senaryo 2: Test Öncesi Sipariş Oluşturma
UI testinden önce backend'de data hazırlama
🎯 Kullanım Durumu: "Sipariş Detay" sayfasını test edeceksin ama önce bir sipariş olması lazım. UI'dan sipariş vermek 10 step, API ile 1 step!
URL
{{base_url}}/api/orders
Headers
Authorization: Bearer {{auth_token}}
Request Body
{
"items": [
{ "productId": 101, "quantity": 2 },
{ "productId": 205, "quantity": 1 }
],
"shippingAddress": {
"city": "Istanbul",
"district": "Kadıköy"
}
}
Response'dan orderId al, sonra UI'da
/orders/{{orderId}} sayfasına git.
Senaryo 3: UI İşlemini API'den Doğrulama
Formda değişiklik yaptın, backend'e gerçekten kaydoldu mu?
🎯 Kullanım Durumu: UI'dan profil bilgilerini güncelledin. "Başarılı" mesajı göründü ama database'e gerçekten yazıldı mı?
URL
{{base_url}}/api/users/{{user_id}}
Response Assertion
// Status Code
200
// JSONPath Assertions
$.data.phone == "+905551234567"
$.data.address.city == "Ankara"
Senaryo 4: Liste API Pagination Kontrolü
Query params ile sayfalama testi
🎯 Kullanım Durumu: Ürün listesi API'sinin pagination'ı doğru çalışıyor mu kontrol etmek istiyorsun.
URL (Query Params ile)
{{base_url}}/api/products?page=2&limit=20&sort=price_asc
Response Assertion
// Array uzunluğu kontrolü
$.data.length == 20
// Pagination meta kontrolü
$.meta.currentPage == 2
$.meta.totalPages > 1
Senaryo 5: Silme İşlemi Doğrulama
UI'dan sildin, gerçekten silindi mi?
🎯 Kullanım Durumu: UI'dan bir adresi sildin. Soft delete mi hard delete mi? API'den kontrol et.
Step 1: Silme API'si
DELETE {{base_url}}/api/addresses/{{address_id}}
Expected: 204 No Content
Step 2: Tekrar GET ile kontrol
GET {{base_url}}/api/addresses/{{address_id}}
Expected: 404 Not Found
Senaryo 6: Dosya Upload API Testi
multipart/form-data ile dosya yükleme
🎯 Kullanım Durumu: Profil fotoğrafı yükleme API'sini test etmek istiyorsun.
URL
{{base_url}}/api/users/avatar
Content-Type
multipart/form-data
Form Data
file: [test-avatar.png] // Dosya seç
userId: {{user_id}}
Senaryo 7: Zincirleme API İstekleri
Bir response'un output'unu sonraki request'te kullanma
🎯 Kullanım Durumu: Önce kategori listesi al, ilk kategorinin ID'siyle o kategorideki ürünleri çek.
Step 1: Kategorileri Listele
GET /api/categories → $.data[0].id → category_id'ye kaydet
Step 2: Kategori Ürünlerini Getir
GET /api/categories/{{category_id}}/products
Response İşleme
JSONPath ile Veri Çıkarma
Response JSON'dan belirli değerleri çıkarmak için JSONPath kullanabilirsin:
| JSONPath | Açıklama | Örnek Sonuç |
|---|---|---|
$.data.id |
Direkt alan erişimi | 123 |
$.data.items[0].name |
Array'in ilk elemanı | "iPhone 15" |
$.data.items.length |
Array uzunluğu | 5 |
$.data.items[*].price |
Tüm price değerleri | [100, 200, 150] |
$.data.items[?(@.stock>0)] |
Filtreli seçim | Stokta olanlar |
Status Code Assertion
200, 201, 204, 404, 500...
Global Parameter'a Kaydet
$.data.token → auth_token
Sık Sorulan Sorular
API timeout süresi nedir?
Varsayılan timeout 30 saniyedir. Proje ayarlarından değiştirebilirsin. Uzun süren işlemler için artır.
HTTPS sertifika hatası alıyorum?
Test ortamlarında self-signed sertifika varsa "Ignore SSL Errors" seçeneğini aktifleştir. Production'da kullanma!
Cookie/Session nasıl yönetilir?
API Step'ler arasında cookie otomatik taşınır. Manuel cookie eklemek için Headers'a Cookie: session=xxx ekle.
OAuth 2.0 nasıl yapılır?
İlk step'te token endpoint'ine POST at, dönen access_token'ı Global Parameter'a kaydet. Sonraki isteklerde
Authorization: Bearer {{access_token}} kullan.