Back to Repositories

Testing Extra Image Processing Operations in AUTOMATIC1111/stable-diffusion-webui

This test suite validates the extra image processing capabilities of the Stable Diffusion WebUI, focusing on upscaling, PNG metadata handling, and image interrogation functionalities. The tests ensure proper API endpoint responses for various image manipulation operations.

Test Coverage Overview

The test suite provides comprehensive coverage of the /sdapi/v1/extra-single-image endpoint functionality.

  • Image upscaling with configurable parameters
  • PNG metadata extraction and processing
  • Image interrogation using CLIP model
  • API response validation for all operations

Implementation Analysis

The tests employ a straightforward HTTP request-based approach using the Python requests library. Each test function validates specific image processing operations by sending POST requests with different payload configurations and asserting successful response codes.

  • Base64 encoded image handling
  • Parameter validation for upscaling operations
  • Model-specific interrogation testing

Technical Details

  • Testing Framework: Python unittest
  • HTTP Client: requests library
  • Test Data: Base64 encoded images
  • API Endpoint: /sdapi/v1/extra-single-image
  • Response Validation: HTTP 200 status codes

Best Practices Demonstrated

The test suite demonstrates clean and focused test cases with clear separation of concerns. Each test function validates a single specific functionality with appropriate parameter configurations and assertions.

  • Isolated test cases for each feature
  • Consistent payload structure
  • Clear test naming conventions
  • Proper use of test fixtures

automatic1111/stable-diffusion-webui

test/test_extras.py

            
import requests


def test_simple_upscaling_performed(base_url, img2img_basic_image_base64):
    payload = {
        "resize_mode": 0,
        "show_extras_results": True,
        "gfpgan_visibility": 0,
        "codeformer_visibility": 0,
        "codeformer_weight": 0,
        "upscaling_resize": 2,
        "upscaling_resize_w": 128,
        "upscaling_resize_h": 128,
        "upscaling_crop": True,
        "upscaler_1": "Lanczos",
        "upscaler_2": "None",
        "extras_upscaler_2_visibility": 0,
        "image": img2img_basic_image_base64,
    }
    assert requests.post(f"{base_url}/sdapi/v1/extra-single-image", json=payload).status_code == 200


def test_png_info_performed(base_url, img2img_basic_image_base64):
    payload = {
        "image": img2img_basic_image_base64,
    }
    assert requests.post(f"{base_url}/sdapi/v1/extra-single-image", json=payload).status_code == 200


def test_interrogate_performed(base_url, img2img_basic_image_base64):
    payload = {
        "image": img2img_basic_image_base64,
        "model": "clip",
    }
    assert requests.post(f"{base_url}/sdapi/v1/extra-single-image", json=payload).status_code == 200