Bird
Raised Fist0
Testing Fundamentalstesting~8 mins

Request methods and status codes in Testing Fundamentals - Framework Patterns

Choose your learning style10 modes available
Framework Mode - Request methods and status codes
Folder Structure
api-testing-framework/
├── tests/
│   ├── test_get_requests.py
│   ├── test_post_requests.py
│   ├── test_put_requests.py
│   ├── test_delete_requests.py
│   ├── test_patch_requests.py
│   └── test_status_codes.py
├── utils/
│   ├── api_client.py
│   └── helpers.py
├── config/
│   ├── environments.yaml
│   └── credentials.yaml
├── reports/
│   └── latest_report.html
├── conftest.py
└── pytest.ini
  
Test Framework Layers
  • API Client Layer: Handles sending HTTP requests (GET, POST, PUT, PATCH, DELETE) and receiving responses.
  • Test Layer: Contains test cases that verify request methods and validate status codes.
  • Utilities Layer: Helper functions for common tasks like building URLs, parsing responses, and logging.
  • Configuration Layer: Stores environment URLs, credentials, and other settings to run tests in different setups.
  • Reporting Layer: Generates test execution reports and integrates with CI/CD pipelines.
Configuration Patterns
  • Environment Files: Use YAML or JSON files (e.g., environments.yaml) to define base URLs for dev, staging, and production.
  • Credentials Management: Store API keys or tokens securely in separate config files or environment variables.
  • Parameterization: Use fixtures or config parsers to switch environments and credentials without changing test code.
  • Browser/Client Settings: For API testing, configure headers, timeouts, and retries in the API client layer.
Test Reporting and CI/CD Integration
  • Use pytest-html or Allure to generate readable HTML reports showing passed and failed tests with details.
  • Integrate test runs into CI/CD pipelines (e.g., GitHub Actions, Jenkins) to run tests automatically on code changes.
  • Configure reports to include request and response details for failed tests to help debugging.
  • Set up notifications (email, Slack) to alert the team when tests fail.
Best Practices
  • Use Clear Naming: Name tests by HTTP method and expected status code (e.g., test_get_returns_200).
  • Isolate Tests: Each test should focus on one request method and one expected status code to keep tests simple.
  • Validate Status Codes: Always assert the HTTP status code matches the expected result (e.g., 200 OK, 404 Not Found).
  • Use Reusable API Client: Centralize request sending logic to avoid duplication and ease maintenance.
  • Handle Negative Cases: Test error status codes like 400, 401, 403, 404 to ensure API handles bad requests properly.
Self Check

Where in this folder structure would you add a new test for verifying the PATCH request method?

Key Result
Organize API tests by separating request methods, status code validations, utilities, and configurations for clear, maintainable testing.

Practice

(1/5)
1. Which HTTP request method is typically used to retrieve data from a server without changing it?
easy
A. PUT
B. POST
C. DELETE
D. GET

Solution

  1. Step 1: Understand the purpose of HTTP methods

    GET is used to request data without modifying it, while POST, PUT, and DELETE change data on the server.
  2. Step 2: Match method to action

    Since the question asks for retrieving data without changes, GET is the correct method.
  3. Final Answer:

    GET -> Option D
  4. Quick Check:

    Retrieve data = GET [OK]
Hint: GET always fetches data without side effects [OK]
Common Mistakes:
  • Confusing POST with GET for data retrieval
  • Thinking PUT or DELETE retrieve data
  • Assuming GET modifies data
2. Which HTTP status code means the request was successful and the server returned the requested data?
easy
A. 200 OK
B. 404 Not Found
C. 500 Internal Server Error
D. 301 Moved Permanently

Solution

  1. Step 1: Identify success status codes

    HTTP status codes starting with 2xx indicate success. 200 OK means the request succeeded and data is returned.
  2. Step 2: Eliminate error and redirect codes

    404 means not found, 500 means server error, and 301 means redirect. These do not indicate success with data returned.
  3. Final Answer:

    200 OK -> Option A
  4. Quick Check:

    Success code = 200 OK [OK]
Hint: 200 means success and data returned [OK]
Common Mistakes:
  • Choosing 404 thinking it means success
  • Confusing 301 redirect with success
  • Mixing client and server error codes
3. What will be the HTTP status code returned if a client sends a DELETE request to remove a resource successfully?
medium
A. 201 Created
B. 204 No Content
C. 400 Bad Request
D. 403 Forbidden

Solution

  1. Step 1: Understand DELETE success codes

    A successful DELETE request usually returns 204 No Content, meaning the resource was deleted and no content is returned.
  2. Step 2: Eliminate other codes

    201 Created is for resource creation, 400 Bad Request means client error, and 403 Forbidden means no permission.
  3. Final Answer:

    204 No Content -> Option B
  4. Quick Check:

    DELETE success = 204 No Content [OK]
Hint: DELETE success usually returns 204 No Content [OK]
Common Mistakes:
  • Choosing 201 which is for creation
  • Confusing 400 with success
  • Thinking 403 means success
4. A test script sends a POST request to create a new user but receives a 405 Method Not Allowed status. What is the most likely cause?
medium
A. The server does not support the POST method on this URL
B. The user data is invalid
C. The server is down
D. The request timed out

Solution

  1. Step 1: Understand 405 status meaning

    405 Method Not Allowed means the HTTP method used is not supported by the server for the requested URL.
  2. Step 2: Eliminate other causes

    Invalid data usually causes 400 errors, server down causes 5xx errors, and timeout causes no response or 408.
  3. Final Answer:

    The server does not support the POST method on this URL -> Option A
  4. Quick Check:

    405 = Method not allowed [OK]
Hint: 405 means method not allowed on this URL [OK]
Common Mistakes:
  • Thinking 405 means invalid data
  • Confusing 405 with server errors
  • Assuming timeout causes 405
5. During API testing, a PUT request to update a resource returns 409 Conflict. What should the tester check next?
hard
A. If the request method should be GET instead
B. If the request URL is incorrect
C. If the resource already exists and has conflicting changes
D. If the server is overloaded

Solution

  1. Step 1: Understand 409 Conflict meaning

    409 Conflict means the request could not be completed due to a conflict with the current state of the resource, often caused by simultaneous updates.
  2. Step 2: Identify what to check

    The tester should check if the resource exists and if there are conflicting changes that prevent the update.
  3. Final Answer:

    If the resource already exists and has conflicting changes -> Option C
  4. Quick Check:

    409 = Conflict with resource state [OK]
Hint: 409 means conflict with existing resource state [OK]
Common Mistakes:
  • Assuming 409 means wrong URL
  • Thinking 409 means server overload
  • Confusing 409 with method errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard