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

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

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).

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.1.0.tar.gz (18.6 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.1.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: the_thomas_test_suite-0.1.0.tar.gz
  • Upload date:
  • Size: 18.6 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.1.0.tar.gz
Algorithm Hash digest
SHA256 9db8032e660ab8a4a6bf804ef93e01def0dd408b88faa260f5c08916427bfda2
MD5 799776fc290cbf3c7555f8b55898091f
BLAKE2b-256 6f8eaced08847176062d8dd5c48a28c3753704482f99682b51afc0f2746ad6b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for the_thomas_test_suite-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ba7e14b2b6039425b33c19e1588be9cdba9b8c9c5c5f70cc58384056365b852
MD5 a2ea5268ae2cf35ae68b047eb2ea2e48
BLAKE2b-256 1f45beb680ae7f6e5d63434584b0257518a62e38d27dacedbdcbed2979d0419e

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