Q35 of 40 · REST Assured
How would you migrate from a Postman/Newman test suite to REST Assured incrementally?
Short answer
Short answer: Run both suites against the same environment in parallel — they must agree on every endpoint before any deletion. Port collection by collection: map Postman's pm.expect() assertions to Hamcrest, pre-request scripts to Java helpers, and environment variables to RequestSpecBuilder config. Delete Postman tests once their REST Assured equivalents pass review.
Detail
An incremental migration avoids a big-bang rewrite and catches regressions at every step:
Phase 1 — parallel running: add REST Assured to the Maven build and configure CI to run both Newman and REST Assured against the same env. Any disagreement between the suites is a migration bug to fix before deleting the Postman test.
Phase 2 — collection-by-collection porting:
- Postman
pm.response.json().id→ REST Assured.extract().path("id") pm.expect(json.name).to.equal("Alice")→.body("name", equalTo("Alice"))- Pre-request scripts (token fetch, HMAC signing) → Java helpers or filters
- Postman environment variables →
RequestSpecBuilderwith env vars - Postman collection variables → shared
@BeforeAllsetup
Phase 3 — delete Postman tests after code review: requires sign-off from the team that coverage is equivalent or better.
Risk areas: Postman's JavaScript pre-request scripts may implement custom auth or data transforms that need careful translation to Java. Map these first — they are the highest-risk migration items.
// EXAMPLE
// Postman test (JavaScript)
// pm.test("Create user returns 201", function() {
// pm.response.to.have.status(201);
// var json = pm.response.json();
// pm.expect(json.id).to.be.a("number");
// pm.expect(json.name).to.equal(pm.variables.get("testUserName"));
// pm.environment.set("createdUserId", json.id);
// });
// REST Assured equivalent (Java)
@Test
void createUser_returns201WithId() {
String testUserName = "Alice-" + UUID.randomUUID();
int createdUserId = given(reqSpec)
.body(Map.of("name", testUserName, "email", testUserName + "@test.com"))
.when()
.post("/users")
.then()
.statusCode(201)
.body("id", instanceOf(Integer.class))
.body("name", equalTo(testUserName))
.extract().path("id");
// Use createdUserId in subsequent tests (method-scope variable, not env var)
assertThat(createdUserId).isPositive();
}