pypi schemathesis 4.27.0
Release 4.27.0

6 hours ago

🚀 Added

  • Dependency inference links body fields to the collection listing their accepted values.
  • Generated data reuses values from list responses, not only single-object ones.
  • Generated data reuses values from responses whose schema the spec omits.
  • Path parameters take values seen under the same name in earlier responses.
  • Integer fields in JSON bodies draw float spellings (2.0) under Open API 3.1 and 3.2.
  • Baseline file so CI fails only on failures that are new.
  • filter_failure hook to drop check failures by a custom condition. #1792

🔧 Changed

  • Examples phase names the parameter it cannot generate and prints its schema.
  • missing_test_data warning tips reflect whether links reach the operation and whether stateful testing ran.
  • Reports record response bodies larger than 1 MiB as a prefix with the original size.

🏎️ Performance

  • Coverage phase ~270x faster on strings declaring format, pattern, and a length bound together. #4593
  • Coverage phase up to 6x faster on strings carrying a format and a length bound.
  • Strings whose length bound no format value can reach are ruled out without drawing.
  • format: date-time values are built to fit a length bound instead of drawn until one fits.
  • format: email and format: uri values are built to fit a length bound too.

🐛 Fixed

WFC authentication

  • Operations refusing every configured identity never retried without credentials.
  • Operations no identity can reach left unauthenticated instead of keeping the one that got furthest.
  • Every identity tried before anonymous, spending a short run on credentials that never work.
  • Identity escalation stopped by a 404, leaving role-gated operations pinned to the first user.

Others

  • No positive cases where a format and a length bound could not both be met. #4592
  • missing_auth warning for operations that returned 2xx responses later in the run.
  • Inferred links dropped for every consumer of a resource after the first with the same method.
  • KeyError from an evicted cache entry on free-threaded Python.
  • Crash with dictionary changed size during iteration when several workers reuse values from responses.
  • Bean-validation @Range bounds ignored in Spring error responses.
  • Spring validation errors for query parameters applied to the request body.
  • Server-reported numeric bounds not applied to the items of a repeated parameter.
  • Server-reported numeric bounds discarded in favour of the wider format: int32/int64 range.
  • --exclude-method and other exclusions ignored for unexpected HTTP methods in the coverage phase. #3142
  • False positives positive_data_acceptance and negative_data_rejection for 429 responses.
  • Config file and CLI values ignored when equal to an option's default.

Don't miss a new schemathesis release

NewReleases is sending notifications on new releases.