Ana içeriğe geç

REST Assured'dan Geçiş

TestFly ApiClient ve BaseApiTest, HTTP status, JSON ve schema assertion'ları için akıcı bir alternatif sunar. Önce tek bir testle başlayın; REST Assured bağımlılığını kalan testler taşındıktan sonra kaldırın. Tüm REST Assured matcher veya JsonPath davranışlarının birebir eşit olduğunu varsaymayın.

Temel farklar​

KonuTestFly yaklaşımı
HTTP motoruJDK java.net.http.HttpClient
AssertionsApiResponse üzerinden status, JSON, body ve süre kontrolleri
JSON Schemaİsteğe bağlı com.networknt:json-schema-validator:1.4.3 dependency
UI + APIBaseTest içinde her iki API; ScenarioContext ile test kapsamındaki veri paylaşımı
Yapılandırmatestfly.yml ve isimlendirilmiş auth profilleri

Kurulum sürümü için Başlangıç sayfasını kullanın. Güncel development API'leri için checkout artifact'ini yerel olarak kurmanız gerekebilir.

GET ve durum kontrolü​

// REST Assured
given().baseUri("https://api.example.com")
.header("Accept", "application/json")
.when().get("/users/42")
.then().statusCode(200);

// TestFly
ApiClient.get("/users/42")
.header("Accept", "application/json")
.send()
.assertStatus(200);

JSON POST ve değer okuma​

ApiResponse response = ApiClient.post("/auth/login")
.body(Map.of("username", "admin", "password", "secret"))
.send()
.assertStatus(200);
String token = response.json("$.accessToken");

ApiClient, ApiResponse ve java.util.Map import'larını ekleyin. api.baseUrl değerini test YAML'ında tanımlayın.

Path ve query parametreleri​

ApiClient.get("/orders/{orderId}")
.pathParam("orderId", 101)
.queryParam("status", "shipped")
.send();

JSON Schema​

Schema dosyasını src/test/resources/schemas/product.json içine koyun ve isteğe bağlı validator dependency'sini ekleyin:

ApiClient.get("/products/1")
.send()
.assertSchema("schemas/product.json");

Schema Validation rehberi dependency ve OpenAPI kapsamını açıklar.

UI/API hibrit test​

import io.testfly.test.BaseTest;
import io.testfly.client.ApiResponse;
import java.util.Map;
import org.testng.annotations.Test;

public class CheckoutHybridTest extends BaseTest {
@Test
public void seedViaApiAndVerifyInBrowser() {
ApiResponse order = apiClient().post("/api/orders")
.body(Map.of("item", "Laptop", "quantity", 1))
.send()
.assertStatus(201);
String orderId = order.json("$.orderId");
open("/orders/" + orderId);
assertThat(find("#order-status")).hasText("CONFIRMED");
}
}

Örnek endpoint ve DOM seçicileri uygulamanıza göre değiştirin; bu örnek gerçek bir backend ve tarayıcı gerektirir.