Prompt
How do I parameterize API test cases for multiple inputs?
Latest observation
Oct 6, 2026
OpenAI APIWeb search: off
Parameterizing API test cases means running the same test logic with different input sets and expected results. The exact method depends on your test framework, but the general approach is:
1. Define your test data
Create a table/list of cases with:
- input payloads
- path/query params
- headers
- expected status codes
- expected response fields
Example:
| Case | Input | Expected Status |
|---|---|---|
| valid user | {"name":"Ana","age":30} | 201 |
| missing name | {"age":30} | 400 |
| invalid age | {"name":"Ana","age":"abc"} | 400 |
2. Write one reusable test
Your test should accept parameters and assert outcomes based on them.
Pseudo-example:
def test_create_user(payload, expected_status):
response = api.post("/users", json=payload)
assert response.status_code == expected_status
3. Feed multiple cases into the test
Use your framework’s parameterization feature.
Pytest example
import pytest
@pytest.mark.parametrize("payload, expected_status", [
({"name": "Ana", "age": 30}, 201),
({"age": 30}, 400),
({"name": "Ana", "age": "abc"}, 400),
])
def test_create_user(payload, expected_status):
response = client.post("/users", json=payload)
assert response.status_code == expected_status
JUnit 5 example
@ParameterizedTest
@MethodSource("userCases")
void testCreateUser(Map<String, Object> payload, int expectedStatus) {
Response response = given()
.body(payload)
.when().post("/users");
assertEquals(expectedStatus, response.statusCode());
}
Postman/Newman
Use:
- CSV/JSON data files in the collection runner
- variable substitution like
{{name}},{{age}}
4. Keep assertions data-driven
For each case, validate:
- status code
- error message
- schema
- important response fields
- side effects if needed
5. Best practices
- Keep each case independent
- Name cases clearly
- Cover positive, negative, and boundary inputs
- Use fixtures/helpers for setup/teardown
- Avoid overloading one parameterized test with too many unrelated assertions
If you want, I can show you how to do this in a specific tool like pytest, JUnit, REST Assured, Postman, Karate, or Playwright.