1- from unittest import TestResult , skip
1+ from unittest import TestResult , TestSuite , skip
22
33from django .test import SimpleTestCase
4- from django .test .runner import RemoteTestResult
4+ from django .test .runner import RemoteTestRunner
55from openwisp_utils .tests .selenium import SeleniumTestMixin
66
77
88class TestSeleniumMixinSkipHandling (SimpleTestCase ):
9- def _run_skipped_test (self , result_class ):
9+ def _run_skipped_standard_test (self ):
1010 class SkippedSeleniumTest (SeleniumTestMixin , SimpleTestCase ):
1111 retry_max = 0
1212 retry_delay = 0
@@ -16,20 +16,56 @@ def test_skip(self):
1616 pass
1717
1818 test = SkippedSeleniumTest ("test_skip" )
19- if result_class is RemoteTestResult :
20- result = result_class (stream = None , descriptions = None , verbosity = 0 )
21- else :
22- result = result_class ()
19+ result = TestResult ()
2320 test ._setup_and_call (result )
2421 return result
2522
23+ def _run_skipped_remote_suite (self ):
24+ class DummyWebDriver :
25+ def quit (self ):
26+ pass
27+
28+ class SkippedSeleniumTest (SeleniumTestMixin , SimpleTestCase ):
29+ retry_max = 0
30+ retry_delay = 0
31+
32+ @classmethod
33+ def get_webdriver (cls ):
34+ return DummyWebDriver ()
35+
36+ @skip ("first skip propagation regression test" )
37+ def test_first_skip (self ):
38+ pass
39+
40+ @skip ("second skip propagation regression test" )
41+ def test_second_skip (self ):
42+ pass
43+
44+ suite = TestSuite (
45+ [
46+ SkippedSeleniumTest ("test_first_skip" ),
47+ SkippedSeleniumTest ("test_second_skip" ),
48+ ]
49+ )
50+ return RemoteTestRunner ().run (suite )
51+
2652 def test_setup_and_call_propagates_skip_to_standard_result (self ):
27- result = self ._run_skipped_test ( TestResult )
53+ result = self ._run_skipped_standard_test ( )
2854
2955 self .assertEqual (len (result .skipped ), 1 )
3056 self .assertEqual (result .skipped [0 ][1 ], "skip propagation regression test" )
3157
32- def test_setup_and_call_records_skip_event_for_remote_result (self ):
33- result = self ._run_skipped_test ( RemoteTestResult )
58+ def test_setup_and_call_preserves_remote_skip_events_for_multiple_tests (self ):
59+ result = self ._run_skipped_remote_suite ( )
3460
35- self .assertIn (("addSkip" , 0 , "skip propagation regression test" ), result .events )
61+ self .assertEqual (
62+ result .events ,
63+ [
64+ ("startTest" , 0 ),
65+ ("addSkip" , 0 , "first skip propagation regression test" ),
66+ ("stopTest" , 0 ),
67+ ("startTest" , 1 ),
68+ ("addSkip" , 1 , "second skip propagation regression test" ),
69+ ("stopTest" , 1 ),
70+ ],
71+ )
0 commit comments