Skip to content
GitHub
documentation

Getting started

What Bud is and the shortest path from a Python suite to a test run in Bud.

Bud TMP is a test management and execution platform for automated software, hardware, and system testing. It gives teams one place to monitor Test Stations, inspect runs and assertions, retain artifacts, and connect execution evidence to Bloom PLM.

Bud is EmbedLabs’ test management platform. bud_runner executes your Python suites and reports back to it, and budtestlibrary is the framework you write those suites in.

Component Role
Bud TMP Stores, presents, and manages execution results
bud-runner Runs trusted Python test suites and uploads their results to Bud
budtestlibrary Provides the Python test lifecycle, assertions, result model, and optional Bloom metadata
Bloom PLM Optionally receives linked test case execution outcomes from Bud

bud-runner and budtestlibrary are independent AGPL-3.0 open-source Python packages. They work with Bud without requiring Bloom.

  • Live Test Station registration, heartbeat, and availability
  • Searchable test runs with status, station, and location filters
  • Assertion results, execution events, logs, and uploaded artifacts
  • Custom runs built from the test catalogue and dispatched per station
  • PDF reports for the dashboard and individual runs, with an optional company logo
  • Dashboard statistics filtered by time range, Test Station, and suite
  • User, invitation, and group management with Administrator, Developer, and Viewer roles
  • Runner-token and API-key authentication for automated uploads
  • Optional result synchronization to Bloom PLM test cases
  • Readiness, health, metrics, structured logging, and backup workflows
  • An audit log of security-relevant events
  • Python 3.9 or later.
  • A running Bud backend. See Install. bud_runner defaults to http://localhost:8000.
  • Both packages installed:
pip install bud-runner budtestlibrary

Write test cases with budtestlibrary, then run them. The runner resolves a test case list from a module attribute (module.LIST_ATTR: a list of "module.ClassName" strings), executes each case, and writes a JUnit report.

# tests/smoke.py
SMOKE_TEST_LIST = ["tests.demo_voltage.VoltageTest"]
python -m bud_runner run-tests \
--test-case-list tests.smoke.SMOKE_TEST_LIST \
--output report_junit.xml

Each test class runs in its own process, bounded by a per-test and a suite timeout. See bud-runner.

To upload results, point the runner at your instance with --backend-url, or set the environment variable:

export BUD_BACKEND_URL=https://bud.example.com

Then register a Test Station on that instance. Follow Register a runner. Uploads are enabled by default. Use --no-upload for local runs.