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: selfCheck → setup → run → teardown |
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vault88-0.2.1.tar.gz.
File metadata
- Download URL: vault88-0.2.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d79e08c74a56e640017f04f889c2eca32c5f2b7695b5bc2e1c14b16b29fbfff
|
|
| MD5 |
f48658d9d7a48f5f8c06f2da8ee32816
|
|
| BLAKE2b-256 |
06c08a6e45f0c8ccfc52bbf358e331879eebbff811d35dbab0a6720a1ab1800d
|
File details
Details for the file vault88-0.2.1-py3-none-any.whl.
File metadata
- Download URL: vault88-0.2.1-py3-none-any.whl
- Upload date:
- Size: 22.6 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b03125c6e44dfc46cb39b08722280c11970f6e8db481e6d32149af917084645
|
|
| MD5 |
752fa8102be1761d72a7ee611afdea01
|
|
| BLAKE2b-256 |
63467b5c1d2d0882d066a4f2e431db9d71a20d81a414e2cb3170abcebdc584fc
|