@@ -55,7 +55,7 @@ def test_zaz(subtests):
5555 [
5656 "test_*.py uFuF. * [[]100%[]]" ,
5757 * summary_lines ,
58- "* 4 failed, 1 passed in *" ,
58+ "* 2 failed, 1 passed, 2 subtests failed in *" ,
5959 ]
6060 )
6161
@@ -69,7 +69,7 @@ def test_zaz(subtests):
6969 "test_*.py::test_zaz SUBPASSED[[]zaz subtest[]] * [[]100%[]]" ,
7070 "test_*.py::test_zaz PASSED * [[]100%[]]" ,
7171 * summary_lines ,
72- "* 4 failed, 1 passed, 1 subtests passed in *" ,
72+ "* 2 failed, 1 passed, 1 subtests passed, 2 subtests failed in *" ,
7373 ]
7474 )
7575 pytester .makeini (
@@ -87,7 +87,7 @@ def test_zaz(subtests):
8787 "test_*.py::test_bar FAILED * [[] 66%[]]" ,
8888 "test_*.py::test_zaz PASSED * [[]100%[]]" ,
8989 * summary_lines ,
90- "* 4 failed, 1 passed in *" ,
90+ "* 2 failed, 2 subtests failed, 1 passed in *" ,
9191 ]
9292 )
9393 result .stdout .no_fnmatch_line ("test_*.py::test_zaz SUBPASSED[[]zaz subtest[]]*" )
@@ -307,7 +307,7 @@ def test_foo(subtests, x):
307307 "*.py::test_foo[[]1[]] SUBFAILED[[]custom[]] (i=1) *[[]100%[]]" ,
308308 "*.py::test_foo[[]1[]] FAILED *[[]100%[]]" ,
309309 "contains 1 failed subtest" ,
310- "* 4 failed, 4 subtests passed in *" ,
310+ "* 2 failed, 4 subtests passed, 2 subtests failed in *" ,
311311 ]
312312 )
313313
@@ -325,7 +325,7 @@ def test_foo(subtests, x):
325325 "*.py::test_foo[[]1[]] SUBFAILED[[]custom[]] (i=1) *[[]100%[]]" ,
326326 "*.py::test_foo[[]1[]] FAILED *[[]100%[]]" ,
327327 "contains 1 failed subtest" ,
328- "* 4 failed in *" ,
328+ "* 2 failed, 2 subtests failed in *" ,
329329 ]
330330 )
331331
@@ -344,7 +344,7 @@ def test_foo(subtests):
344344 result = pytester .runpytest ("-v" )
345345 result .stdout .fnmatch_lines (
346346 [
347- "* 2 failed, 2 subtests passed in *" ,
347+ "* 1 failed, 2 subtests passed, 1 subtests failed in *" ,
348348 ]
349349 )
350350
@@ -365,7 +365,7 @@ def test_foo(subtests):
365365 result .stdout .fnmatch_lines (
366366 [
367367 "*AssertionError: top-level failure" ,
368- "* 2 failed, 2 subtests passed in *" ,
368+ "* 1 failed, 2 subtests passed, 1 subtests failed in *" ,
369369 ]
370370 )
371371
@@ -386,14 +386,14 @@ def test_foo(subtests):
386386 result = pytester .runpytest ("-v" )
387387 result .stdout .fnmatch_lines (
388388 [
389- "* 2 failed, 2 subtests passed in *" ,
389+ "* 1 failed, 2 subtests passed, 1 subtests failed in *" ,
390390 ]
391391 )
392392
393393 result = pytester .runpytest ("-v" , flag )
394394 result .stdout .fnmatch_lines (
395395 [
396- "* 2 failed, 2 subtests passed in *" ,
396+ "* 1 failed, 2 subtests passed, 1 subtests failed in *" ,
397397 ]
398398 )
399399
@@ -427,7 +427,7 @@ def test_zaz(self):
427427 result = pytester .runpytest ()
428428 result .stdout .fnmatch_lines (
429429 [
430- "* 3 failed, 2 passed in *" ,
430+ "* 1 failed, 2 passed, 1 subtests passed, 2 subtests failed in *" ,
431431 ]
432432 )
433433
@@ -578,9 +578,7 @@ def test_foo(self):
578578 result .stdout .fnmatch_lines (
579579 [
580580 "*.py u. * [[]100%[]]" ,
581- "*=== short test summary info ===*" ,
582- "SUBFAILED[[]subtest 2[]] *.py::T::test_foo - AssertionError: fail subtest 2" ,
583- "* 1 failed, 1 passed in *" ,
581+ "* 1 passed, 1 subtests failed in *" ,
584582 ]
585583 )
586584
@@ -590,9 +588,9 @@ def test_foo(self):
590588 "*.py::T::test_foo SUBSKIPPED[[]subtest 1[]] (skip subtest 1) * [[]100%[]]" ,
591589 "*.py::T::test_foo SUBFAILED[[]subtest 2[]] * [[]100%[]]" ,
592590 "*.py::T::test_foo PASSED * [[]100%[]]" ,
591+ "*=== short test summary info ===*" ,
593592 "SUBSKIPPED[[]subtest 1[]] [[]1[]] *.py:*: skip subtest 1" ,
594- "SUBFAILED[[]subtest 2[]] *.py::T::test_foo - AssertionError: fail subtest 2" ,
595- "* 1 failed, 1 passed, 1 skipped in *" ,
593+ "* 1 passed, 1 skipped, 1 subtests failed in *" ,
596594 ]
597595 )
598596
@@ -607,9 +605,7 @@ def test_foo(self):
607605 [
608606 "*.py::T::test_foo SUBFAILED[[]subtest 2[]] * [[]100%[]]" ,
609607 "*.py::T::test_foo PASSED * [[]100%[]]" ,
610- "*=== short test summary info ===*" ,
611- r"SUBFAILED[[]subtest 2[]] *.py::T::test_foo - AssertionError: fail subtest 2" ,
612- r"* 1 failed, 1 passed in *" ,
608+ "* 1 passed, 1 subtests failed in *" ,
613609 ]
614610 )
615611 result .stdout .no_fnmatch_line (
@@ -814,7 +810,7 @@ def test(subtests):
814810 result = pytester .runpytest ("-p no:logging" )
815811 result .stdout .fnmatch_lines (
816812 [
817- "*2 failed in*" ,
813+ "*1 failed, 1 subtests failed in*" ,
818814 ]
819815 )
820816 result .stdout .no_fnmatch_line ("*root:test_no_logging.py*log line*" )
@@ -899,12 +895,15 @@ def test_foo(subtests):
899895 """
900896 )
901897 result = pytester .runpytest ("--exitfirst" )
902- assert result .parseoutcomes ()["failed" ] == 2
898+ outcomes = result .parseoutcomes ()
899+ assert outcomes ["failed" ] == 1
900+ assert outcomes ["subtests failed" ] == 1
903901 result .stdout .fnmatch_lines (
904902 [
905- "SUBFAILED*[[]sub1[]] *.py::test_foo - assert False *" ,
903+ "*=== short test summary info === *" ,
906904 "FAILED *.py::test_foo - assert False" ,
907- "* stopping after 2 failures*" ,
905+ "*stopping after 2 failures*" ,
906+ "*1 failed, 1 subtests failed*" ,
908907 ],
909908 consecutive = True ,
910909 )
@@ -952,9 +951,9 @@ def test(subtests):
952951 [
953952 "SUBFAILED[b] test_nested.py::test - AssertionError: b failed" ,
954953 "SUBFAILED[a] test_nested.py::test - AssertionError: a failed" ,
955- "* 3 failed in *" ,
956954 ]
957955 )
956+ result .stdout .fnmatch_lines (["* 3 failed in *" ])
958957
959958
960959def test_serialization () -> None :
0 commit comments