Coverage for tests / unit / tools / pytest_tool / test_junit_parsing.py: 100%
19 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for pytest JUnit XML output parsing."""
3from __future__ import annotations
5from assertpy import assert_that
7from lintro.parsers.pytest.pytest_parser import parse_pytest_junit_xml
9# =============================================================================
10# Tests for parse_pytest_junit_xml function
11# =============================================================================
14def test_parse_junit_success_returns_empty(
15 mock_test_junit_xml_success: str,
16) -> None:
17 """Parse JUnit XML with all passed returns empty list.
19 Args:
20 mock_test_junit_xml_success: Mock JUnit XML string for successful tests.
21 """
22 issues = parse_pytest_junit_xml(mock_test_junit_xml_success)
23 assert_that(issues).is_empty()
26def test_parse_junit_failure_returns_issues(
27 mock_test_junit_xml_failure: str,
28) -> None:
29 """Parse JUnit XML with failure returns issue list.
31 Args:
32 mock_test_junit_xml_failure: Mock JUnit XML string for failed tests.
33 """
34 issues = parse_pytest_junit_xml(mock_test_junit_xml_failure)
35 assert_that(issues).is_length(1)
36 assert_that(issues[0].test_status).is_equal_to("FAILED")
37 assert_that(issues[0].test_name).is_equal_to("test_failure")
40def test_parse_junit_mixed_returns_all_issues(
41 mock_test_junit_xml_mixed: str,
42) -> None:
43 """Parse JUnit XML with mixed results returns all non-passing issues.
45 Args:
46 mock_test_junit_xml_mixed: Mock JUnit XML string with mixed test results.
47 """
48 issues = parse_pytest_junit_xml(mock_test_junit_xml_mixed)
49 assert_that(issues).is_length(3) # failed, error, skipped
50 statuses = {issue.test_status for issue in issues}
51 assert_that(statuses).contains("FAILED", "ERROR", "SKIPPED")
54def test_parse_junit_empty_returns_empty() -> None:
55 """Parse empty JUnit XML returns empty list."""
56 issues = parse_pytest_junit_xml("")
57 assert_that(issues).is_empty()