Skip to main content

Python automated test framework

Project description

vault88

vault88 is a Python automated test framework designed for structured hardware and software validation in CI/CD pipelines. Tests are written as Python classes, organised into stages, and results can be published through configurable reporters.

Architecture

Component Role
Loader Discovers test classes from files or directories; supports tag-based include/exclude filtering
Logger Centralised logging with rotating file handler and optional verbose (debug) output
Runner Instantiates and executes a test class through its full lifecycle: selfChecksetuprunteardown
Reporter Pluggable reporters loaded from the config file; built-in reporters include JUnit XML and log archive

Test results are grouped into named stages within each test, and each result records an action, expected value, actual value, outcome, timestamp, and optional requirement references.

Installation

pip install vault88

Or with uv:

uv add vault88

Writing a test

Subclass Test and implement the four lifecycle methods:

from vault88 import Test

class MyTest(Test):
    name = "My Test"
    tags = ["smoke"]

    def selfCheck(self) -> bool:
        # Return False to skip the test entirely
        return True

    def setup(self) -> bool:
        # Prepare resources; return False to abort
        return True

    def run(self) -> None:
        self.newStage("Basic checks")
        self.assertEqual("Verify result", expected=42, actual=compute())

    def teardown(self) -> None:
        pass

Available assertion helpers: assertEqual, assertNotEqual, assertTrue, assertFalse, assertGreaterThan, assertLessThan, assertGreaterThanOrEqual, assertLessThanOrEqual, assertIn, assertNotIn, assertIsNone, assertIsNotNone.

Running tests

vault88 <testpath> [options]
Option Description
testpath Path to a test file or directory
-t TAG [TAG ...] Only run tests that have at least one of these tags
-nt TAG [TAG ...] Exclude tests that have any of these tags
-r Recursively search directories for tests
-l FILE Log file path (default: ./test_execution.log)
-v Verbose / debug logging
--env PATH_OR_URL Load an environment from a JSON file or HTTP(S) URL
--junit Generate a testresults.xml JUnit report in the current directory

Configuration

Reporters are configured in /etc/vault88.conf (INI format). Each [REPORTER<n>] section loads one reporter:

[REPORTER1]
module = vault88.core.reporters.junit_reporter
class = JUnitReporter
enabled = true
suite_name = My Project Tests

[REPORTER2]
module = vault88.core.reporters.log_archive_reporter
class = LogArchiveReporter
enabled = true
output_dir = ./logs

Development

Dependencies are managed with uv. Install the project with test dependencies:

uv sync

Running the test suite

uv run pytest

Run with coverage:

uv run pytest --cov=vault88 --cov-report=term-missing

Run tests in parallel:

uv run pytest -n auto

Linting with ruff

Check for issues:

uv run ruff check .

Auto-fix fixable issues:

uv run ruff check --fix .

Check formatting:

uv run ruff format --check .

Apply formatting:

uv run ruff format .

License

MIT

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

vault88-0.2.0.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

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

vault88-0.2.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vault88-0.2.0.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vault88-0.2.0.tar.gz
Algorithm Hash digest
SHA256 11b9864bc34df85c108c3485114d2e0495ddc23592e66ac09be3b8e55c97f684
MD5 53edd029cd4435cf0d1ec67802dd2e9a
BLAKE2b-256 1fabf2646fd504b92066112343a3251667c635f38770c43899dc0e8983e78ef9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vault88-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vault88-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 038dd81930b2b2a14b1e05457660bb9ab6a44a3c154f1b955647f347582bd3b5
MD5 8d61bb56137bdfe82ac80ae2489fe070
BLAKE2b-256 1d87974728157092284c4e243f995a8d46048e733a720dbcef2e5661e7e713cc

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