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

1"""Tests for pytest JUnit XML output parsing.""" 

2 

3from __future__ import annotations 

4 

5from assertpy import assert_that 

6 

7from lintro.parsers.pytest.pytest_parser import parse_pytest_junit_xml 

8 

9# ============================================================================= 

10# Tests for parse_pytest_junit_xml function 

11# ============================================================================= 

12 

13 

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. 

18 

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() 

24 

25 

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. 

30 

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") 

38 

39 

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. 

44 

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") 

52 

53 

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()