[pytest] # addopts: Default CLI options applied to every pytest run. # -ra → Show extra test summary info for skipped, xfailed, etc. # --junitxml=... → Emit JUnit XML for CI systems (machines can parse it). # --html=... → Generate a human-friendly HTML report after each run. # --self-contained-html → Inline CSS/JS in the HTML report for easy sharing. # --tb=short → Short tracebacks to keep logs readable. # -p conftest_plugin → Load our custom plugin (conftest_plugin.py) that: # - extracts Title/Description/Requirements/Steps from test docstrings # - adds custom columns to the HTML report # - writes requirements_coverage.json and summary.md in reports/ addopts = -ra --junitxml=reports/junit.xml --html=reports/report.html --self-contained-html --tb=short -p conftest_plugin --cov=ecu_framework --cov-report=term-missing # markers: Document all custom markers so pytest doesn't warn and so usage is clear. # Use with: pytest -m "markername" markers = hardware: requires real hardware (BabyLIN device and ECU); excluded by default in mock runs babylin: tests that use the BabyLIN interface (may require hardware) unit: fast, isolated tests (no hardware, no external I/O) req_001: REQ-001 - Mock interface shall echo transmitted frames for local testing req_002: REQ-002 - Mock interface shall synthesize deterministic responses for request operations req_003: REQ-003 - Mock interface shall support frame filtering by ID req_004: REQ-004 - Mock interface shall handle timeout scenarios gracefully smoke: Basic functionality validation tests boundary: Boundary condition and edge case tests # testpaths: Where pytest looks for tests by default. testpaths = tests