18 / 65 · 14 API Testing Fundamentals · Response Validation← prev⊞ allnext →☰ Read as one page
3.2Status Codes to Verify
Test both the expected success code and the failure modes:
| Scenario | Expected Code | What to Verify |
|---|---|---|
| Successful GET | 200 | Body contains expected data |
| Successful POST | 201 | Body or Location header contains new resource ID |
| Successful DELETE | 204 | Subsequent GET returns 404 |
| Validation error | 400 or 422 | Error message identifies the invalid field |
| Unauthorized | 401 | Missing or expired token |
| Forbidden | 403 | Valid token, insufficient permissions |
| Not found | 404 | Non-existent resource |
| Conflict | 409 | Duplicate creation attempt |
def test_get_user_success(api, create_user):
user = create_user(name="Alice")
r = api.get(f"/users/{user['id']}")
assert r.status_code == 200
def test_get_nonexistent_user(api):
r = api.get("/users/99999999")
assert r.status_code == 404
def test_create_duplicate_email(api, create_user):
user = create_user(email="unique@test.com")
r = api.post("/users", json={"name": "Duplicate", "email": "unique@test.com"})
assert r.status_code == 409