@@ -684,7 +684,7 @@ def test_pass(): pass
684684
685685 """
686686 )
687- page = run (pytester )
687+ page = run (pytester , cmd_flags = [ "-s" ] )
688688 assert_results (page , passed = 1 )
689689
690690 def test_results_table_hook_pop (self , pytester ):
@@ -759,25 +759,29 @@ def log_cli(self, pytester):
759759
760760 @pytest .fixture
761761 def test_file (self ):
762- return """
763- import pytest
764- import logging
765- @pytest.fixture
766- def setup():
767- logging.info("this is setup")
768- {setup}
769- yield
770- logging.info("this is teardown")
771- {teardown}
762+ def formatter (assertion , setup = "" , teardown = "" , flaky = "" ):
763+ return f"""
764+ import pytest
765+ import logging
766+ @pytest.fixture
767+ def setup():
768+ logging.info("this is setup")
769+ { setup }
770+ yield
771+ logging.info("this is teardown")
772+ { teardown }
773+
774+ { flaky }
775+ def test_logging(setup):
776+ logging.info("this is test")
777+ assert { assertion }
778+ """
772779
773- def test_logging(setup):
774- logging.info("this is test")
775- assert {assertion}
776- """
780+ return formatter
777781
778782 @pytest .mark .usefixtures ("log_cli" )
779783 def test_all_pass (self , test_file , pytester ):
780- pytester .makepyfile (test_file . format ( setup = "" , teardown = "" , assertion = True ))
784+ pytester .makepyfile (test_file ( assertion = True ))
781785 page = run (pytester )
782786 assert_results (page , passed = 1 )
783787
@@ -787,9 +791,7 @@ def test_all_pass(self, test_file, pytester):
787791
788792 @pytest .mark .usefixtures ("log_cli" )
789793 def test_setup_error (self , test_file , pytester ):
790- pytester .makepyfile (
791- test_file .format (setup = "error" , teardown = "" , assertion = True )
792- )
794+ pytester .makepyfile (test_file (assertion = True , setup = "error" ))
793795 page = run (pytester )
794796 assert_results (page , error = 1 )
795797
@@ -800,7 +802,7 @@ def test_setup_error(self, test_file, pytester):
800802
801803 @pytest .mark .usefixtures ("log_cli" )
802804 def test_test_fails (self , test_file , pytester ):
803- pytester .makepyfile (test_file . format ( setup = "" , teardown = "" , assertion = False ))
805+ pytester .makepyfile (test_file ( assertion = False ))
804806 page = run (pytester )
805807 assert_results (page , failed = 1 )
806808
@@ -813,9 +815,7 @@ def test_test_fails(self, test_file, pytester):
813815 "assertion, result" , [(True , {"passed" : 1 }), (False , {"failed" : 1 })]
814816 )
815817 def test_teardown_error (self , test_file , pytester , assertion , result ):
816- pytester .makepyfile (
817- test_file .format (setup = "" , teardown = "error" , assertion = assertion )
818- )
818+ pytester .makepyfile (test_file (assertion = assertion , teardown = "error" ))
819819 page = run (pytester )
820820 assert_results (page , error = 1 , ** result )
821821
@@ -825,7 +825,7 @@ def test_teardown_error(self, test_file, pytester, assertion, result):
825825 assert_that (log ).matches (self .LOG_LINE_REGEX .format (when ))
826826
827827 def test_no_log (self , test_file , pytester ):
828- pytester .makepyfile (test_file . format ( setup = "" , teardown = "" , assertion = True ))
828+ pytester .makepyfile (test_file ( assertion = True ))
829829 page = run (pytester )
830830 assert_results (page , passed = 1 )
831831
@@ -834,6 +834,18 @@ def test_no_log(self, test_file, pytester):
834834 for when in ["setup" , "test" , "teardown" ]:
835835 assert_that (log ).does_not_match (self .LOG_LINE_REGEX .format (when ))
836836
837+ @pytest .mark .usefixtures ("log_cli" )
838+ def test_rerun (self , test_file , pytester ):
839+ pytester .makepyfile (
840+ test_file (assertion = False , flaky = "@pytest.mark.flaky(reruns=2)" )
841+ )
842+ page = run (pytester , query_params = {"visible" : "failed" })
843+ assert_results (page , failed = 1 , rerun = 2 )
844+
845+ log = get_log (page )
846+ assert_that (log .count ("Captured log setup" )).is_equal_to (3 )
847+ assert_that (log .count ("Captured log teardown" )).is_equal_to (5 )
848+
837849
838850class TestCollapsedQueryParam :
839851 @pytest .fixture
0 commit comments