Testing Helpers & Logging Integration
Unittest integration
Bootstrapping a model + instance
import os
import unittest
from pathlib import Path
import spx_python
from spx_python.helpers import (
bootstrap_model_instance,
SpxAssertionLoggingMixin,
spx_ensure_attribute,
)
BASE_URL = os.getenv("SPX_BASE_URL", "http://localhost:8000")
PRODUCT_KEY = os.environ["SPX_PRODUCT_KEY"]
class HeaterTests(SpxAssertionLoggingMixin, unittest.TestCase):
@classmethod
def setUpClass(cls):
model_path = Path("models/heater.yaml")
client, instance, _changed = bootstrap_model_instance(
spx_module=spx_python,
product_key=PRODUCT_KEY,
base_url=BASE_URL,
model_path=model_path,
model_key="tests_heater",
instance_key="tests_heater_inst",
)
cls.client = client
cls.instance = instance
# Tell the mixin where to log
cls.spx_log_instance = instance
cls.spx_log_attr = "_test_logs"
spx_ensure_attribute(instance, cls.spx_log_attr, default=[])Capturing assertion logs with SpxAssertionLoggingMixin
SpxAssertionLoggingMixinRecording test case start/end with spx_log_test_case
spx_log_test_casePytest integration
Overview of SpxPytestLoggerPlugin
SpxPytestLoggerPluginWiring the plugin in conftest.py
conftest.pyUsing spx_log in tests
spx_log in testsAutomatic "testcase" entries from the plugin hook
"testcase" entries from the plugin hookInspecting and consuming logs
Concrete end-to-end examples from spx-examples
spx-examplesBLE Vital Signs Monitor (unittest)
Modbus Vacuum Gauge (unittest)
Pytest with a concrete model (generic MQTT environment sensor)
Last updated

