Skip to main content

Data-driven API test automation with time-decoupled data validation across heterogeneous data sources.

Project description

The Thomas logo

PyPI version Build status License

The Thomas Test Suite

The Thomas is a data-driven API test automation tool. It fires HTTP requests from scenarios described entirely in JSON and validates their side effects across multiple heterogeneous data sources (relational databases, NoSQL, messaging topics), with native support for asynchronous processing of indeterminate duration.

What sets The Thomas apart from other API testing frameworks (Karate, Tavern, Robot Framework) is the simultaneous combination of five characteristics no single researched tool brings together:

  1. 100% declarative JSON scenarios — no custom DSL syntax, no need to write code (Java, Python, or otherwise) per test case.
  2. Data-driven assertions, configured by data (query + operator + expected value), not by code — a non-programmer can edit a scenario.
  3. Multiple heterogeneous data sources (Oracle, DB2, MongoDB, Kafka) under the same declarative interface.
  4. Execution physically decoupled in time between dispatch and validation, as a core design feature — not a workaround.
  5. Low enough barrier to entry for product and QA teams to use during functional acceptance testing, not just developers.

Installation

pip install the-thomas-test-suite

Quickstart

Option 1: Bootstrap a new project (recommended for new users)

pip install the-thomas-test-suite

# Create a new Thomas project in current directory
thomas init

# Start the bundled mock server
cd . && python examples/mock_server.py &

# In another terminal: run the example scenarios
thomas request \
  --environment examples/config/environments/example.json \
  --folder examples/scenarios \
  --variables examples/config/variables.example.json

thomas init creates a ready-to-use project structure with examples, templates, and a mock server for learning. No git clone required.

Option 2: Clone repository and run examples

The example below runs entirely against a local mock HTTP service — no external infrastructure or credentials required.

git clone https://github.com/serjupla/the-thomas-test-suite.git
cd the-thomas-test-suite
pip install -e .

# In one terminal: start the fictional mock service
python examples/mock_server.py

# In another terminal: dispatch the example scenarios
thomas request \
  --environment examples/config/environments/example.json \
  --folder examples/scenarios \
  --variables examples/config/variables.example.json

Example Output

You should see a console summary table and an execution record written under executions/. The bundled scenarios demonstrate variable substitution ({{variable_name}}), correlation ID extraction from both the API response and the request payload, and a scenario left awaiting_validation (data-store validation is a later feature — see Roadmap below).

thomas request running against the bundled examples

Active development

The Thomas is under active development. thomas request (this release) is fully functional; upcoming features include database/NoSQL/messaging validation (thomas validate), real connectors (Oracle, DB2, MongoDB, Kafka), and a self-contained bilingual HTML report. See docs/ROADMAP.md for the full feature roadmap and current status (the roadmap is a process document kept in Portuguese by the maintainer; feature names and statuses are summarized here in English).

Architecture

Normative design documentation — schemas, contracts, CLI commands, and the validation engine — lives in docs/architecture/.

How it compares

The Thomas Karate Tavern Zerocode
Scenario format 100% declarative JSON Gherkin + embedded JS YAML JSON
Non-programmer editable Yes Partial Partial Partial
Multiple heterogeneous data sources (DB/NoSQL/messaging) as first-class validation Yes No No No
Time-decoupled validation (dispatch now, validate later/repeatedly) Yes, core feature No No No
Requires JVM/Java No (Python) Yes No (Python) Yes

License & Brand

The Thomas Test Suite is licensed under the Apache License 2.0 — see NOTICE for attribution. The license permits commercial and free use and requires preservation of copyright/license notices.

"The Thomas" name and logo are the project's brand, protected separately from the code license. Forks are free to use the code under Apache 2.0, but must not present themselves publicly as "The Thomas" or reuse its name/logo — see assets/logo/README.md for the full brand policy.

This project follows Semantic Versioning. See CONTRIBUTING.md for how to contribute.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

the_thomas_test_suite-0.2.0.tar.gz (36.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

the_thomas_test_suite-0.2.0-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file the_thomas_test_suite-0.2.0.tar.gz.

File metadata

  • Download URL: the_thomas_test_suite-0.2.0.tar.gz
  • Upload date:
  • Size: 36.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for the_thomas_test_suite-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b4a0926e5b64b6e2785868d52b2d71e8e02ada9574f0d02882cfb8807b4d3eed
MD5 6eddd33d1f152d549b44e6d940f640ee
BLAKE2b-256 568b2cea1c4792b0de36d46d07327feb22733ba0373e1915cdad0b4dc4fbf014

See more details on using hashes here.

File details

Details for the file the_thomas_test_suite-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for the_thomas_test_suite-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f6a8e9e900fd469c0f81db7e93d129f56d420a3aae336a6a9594e56942996b7
MD5 921e309efbcadaed8b7e5688c208dada
BLAKE2b-256 0f2a259812bbbe4b850067f89a606795ee65939b0c33f327b14d663da0fd6e1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page