PyProdTestTest report
Report
Test run

Production test report

{{ completed }}Complete
{{ outcomes.get("passed", 0) }}Passed
{{ outcomes.get("failed", 0) }}Failed
{{ total }}Total
Run details

Tests

{{ total }} {{ "test" if total == 1 else "tests" }}
{% for test in test_records %} {% set test_index = loop.index0 %}
{% if test.outcome == "passed" %}✓{% elif test.outcome == "failed" %}×{% elif test.outcome == "skipped" %}–{% else %}·{% endif %} {{ test.name }} {{ test.description or test.nodeid }} {{ "%.3f" | format(test.duration) }}s {{ test.outcome }}
{% if test.requirements or test.steps %}

Requirements

{% if test.requirements %}
{% for requirement in test.requirements %}{{ requirement }}{% endfor %}
{% else %} No requirements attached {% endif %}

Procedure

{% if test.steps %}
    {% for step in test.steps %}
  1. {{ step }}
  2. {% endfor %}
{% else %} No operator steps defined {% endif %}
{% endif %}
Logs ({{ test.logs | length }})
    {% for log in test.logs %}
  • {{ log.timestamp }} {{ log.level }} {{ log.logger }} {{ log.message }}
  • {% else %}
  • No logs captured for this test.
  • {% endfor %}
{% if test.measurements %}
Measured data {{ test.measurements | length }} {{ "series" if test.measurements | length == 1 else "series" }}
{% for series in test.measurements %}
{{ series.name }} {{ "Time series" if series.x_axis == "time" else "X / Y plot" }} {% if series.x_axis != "time" and (series.x_unit or series.unit) %} · {{ series.x_unit or "X" }} → {{ series.unit or "Y" }} {% endif %}
{{ series.points[-1].y if series.points else "—" }}{% if series.points and series.unit %} {{ series.unit }}{% endif %} Latest
{% endfor %}
{% endif %} {% if test.failure_reason %}
Failure details
{{ test.failure_reason }}
{% endif %}
{% else %}
No tests were collected.
{% endfor %}