Skip to main content

Python automated test framework

Project description

vault88

pipeline status coverage report

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.1.0.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.1.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vault88-0.1.0.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.1.0.tar.gz
Algorithm Hash digest
SHA256 d53a90b93d19203f1d2d983734a3097d2cf25ef949684704edb8e92d2a76516f
MD5 af4fa0f9db3b1d106b938407bf8c1664
BLAKE2b-256 87c8ed769de6b271b3a2a5d2c7bab3d563f49340dec68178b5a4fafe66223d7a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vault88-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 384f01bb6dd803423ca5d91781395327494756b846d791e1f077a972edf1fb9d
MD5 bb1503b0149ddd5a4074603ab7a535ca
BLAKE2b-256 52566ccbc74d27d8ed827f1f36f4f5db6a53dfe72903cad9b639ef7226b7053f

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