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.2.tar.gz (30.8 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.2-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vault88-0.2.2.tar.gz
  • Upload date:
  • Size: 30.8 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.2.tar.gz
Algorithm Hash digest
SHA256 0e7d044c685b162005611791b1918f34be6bd7aed73c7fa03bf44ffba181d76b
MD5 17493ed82be5f67eb2c32f03f5d02bc3
BLAKE2b-256 d2e572f02ef29a29e95a4e1c2f65fd82d008ac00596a8226e9ddf9bed85acc74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vault88-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 22.7 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8a8a6eb420068bc26afa2a5d98dc9d4acd22dbb5138cc1b0c546f5cd57324a74
MD5 6fe697bcaf985cccb550637d6fce960a
BLAKE2b-256 8e9b860bc3c9a79bf7a120a3becd74bba8bc92b0355eee2bb17fdb8d8c23e870

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