@@ -317,7 +317,7 @@ def test_init_stderr(self):
317
317
(ts , tcs ) = serialize_and_read (
318
318
TestSuite (
319
319
'test' , [TestCase (name = 'Test1' , classname = 'some.class.name' ,
320
- elapsed_sec = 123.345 , stderr = 'I am stderr!' )]))[0 ]
320
+ elapsed_sec = 123.345 , stderr = 'I am stderr!' )]))[0 ]
321
321
verify_test_case (
322
322
self , tcs [0 ],
323
323
{'name' : 'Test1' , 'classname' : 'some.class.name' ,
@@ -511,13 +511,59 @@ def test_init_unicode(self):
511
511
error_message = decode ('Skipped error äöü' , 'utf-8' ),
512
512
error_output = decode ('I skippäd with an error!' , 'utf-8' ))
513
513
514
+ def test_multiple_errors (self ):
515
+ """Tests multiple errors in one test case"""
516
+ tc = TestCase ('Multiple error' , allow_multiple_subelements = True )
517
+ tc .add_error_info ("First error" , "First error message" )
518
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
519
+ verify_test_case (
520
+ self , tcs [0 ], {'name' : 'Multiple error' },
521
+ errors = [{"message" : "First error" , "output" : "First error message" , "type" : "error" }])
522
+ tc .add_error_info ("Second error" , "Second error message" )
523
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
524
+ verify_test_case (
525
+ self , tcs [0 ], {'name' : 'Multiple error' },
526
+ errors = [{"message" : "First error" , "output" : "First error message" , "type" : "error" },
527
+ {"message" : "Second error" , "output" : "Second error message" , "type" : "error" }])
528
+
529
+ def test_multiple_failures (self ):
530
+ """Tests multiple failures in one test case"""
531
+ tc = TestCase ('Multiple failures' , allow_multiple_subelements = True )
532
+ tc .add_failure_info ("First failure" , "First failure message" )
533
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
534
+ verify_test_case (
535
+ self , tcs [0 ], {'name' : 'Multiple failures' },
536
+ failures = [{"message" : "First failure" , "output" : "First failure message" , "type" : "failure" }])
537
+ tc .add_failure_info ("Second failure" , "Second failure message" )
538
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
539
+ verify_test_case (
540
+ self , tcs [0 ], {'name' : 'Multiple failures' },
541
+ failures = [{"message" : "First failure" , "output" : "First failure message" , "type" : "failure" },
542
+ {"message" : "Second failure" , "output" : "Second failure message" , "type" : "failure" }])
543
+
544
+ def test_multiple_skipped (self ):
545
+ """Tests multiple skipped messages in one test case"""
546
+ tc = TestCase ('Multiple skipped' , allow_multiple_subelements = True )
547
+ tc .add_skipped_info ("First skipped" , "First skipped message" )
548
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
549
+ verify_test_case (
550
+ self , tcs [0 ], {'name' : 'Multiple skipped' },
551
+ skipped = [{"message" : "First skipped" , "output" : "First skipped message" }])
552
+ tc .add_skipped_info ("Second skipped" , "Second skipped message" )
553
+ (_ , tcs ) = serialize_and_read (TestSuite ('test' , [tc ]))[0 ]
554
+ verify_test_case (
555
+ self , tcs [0 ], {'name' : 'Multiple skipped' },
556
+ skipped = [{"message" : "First skipped" , "output" : "First skipped message" },
557
+ {"message" : "Second skipped" , "output" : "Second skipped message" }])
558
+
514
559
515
560
def verify_test_case (tc , test_case_element , expected_attributes ,
516
561
error_message = None , error_output = None , error_type = None ,
517
562
failure_message = None , failure_output = None ,
518
563
failure_type = None ,
519
564
skipped_message = None , skipped_output = None ,
520
- stdout = None , stderr = None ):
565
+ stdout = None , stderr = None ,
566
+ errors = [], failures = [], skipped = []):
521
567
for k , v in expected_attributes .items ():
522
568
tc .assertEqual (v , test_case_element .attributes [k ].value )
523
569
@@ -533,47 +579,68 @@ def verify_test_case(tc, test_case_element, expected_attributes,
533
579
stdout , test_case_element .getElementsByTagName (
534
580
'system-out' )[0 ].firstChild .nodeValue .strip ())
535
581
536
- errors = test_case_element .getElementsByTagName ('error' )
582
+ _errors = test_case_element .getElementsByTagName ('error' )
537
583
if error_message or error_output :
538
- tc .assertTrue (len (errors ) > 0 )
584
+ tc .assertTrue (len (_errors ) > 0 )
585
+ elif errors :
586
+ tc .assertEqual (len (errors ), len (_errors ))
539
587
else :
540
- tc .assertEqual (0 , len (errors ))
588
+ tc .assertEqual (0 , len (_errors ))
541
589
542
590
if error_message :
543
591
tc .assertEqual (
544
- error_message , errors [0 ].attributes ['message' ].value )
592
+ error_message , _errors [0 ].attributes ['message' ].value )
545
593
546
- if error_type and errors :
594
+ if error_type and _errors :
547
595
tc .assertEqual (
548
- error_type , errors [0 ].attributes ['type' ].value )
596
+ error_type , _errors [0 ].attributes ['type' ].value )
549
597
550
598
if error_output :
551
599
tc .assertEqual (
552
- error_output , errors [0 ].firstChild .nodeValue .strip ())
600
+ error_output , _errors [0 ].firstChild .nodeValue .strip ())
601
+
602
+ for error_exp , error_r in zip (errors , _errors ):
603
+ tc .assertEqual (error_r .attributes ['message' ].value , error_exp ['message' ])
604
+ tc .assertEqual (error_r .firstChild .nodeValue .strip (), error_exp ['output' ])
605
+ tc .assertEqual (error_r .attributes ['type' ].value , error_exp ['type' ])
553
606
554
- failures = test_case_element .getElementsByTagName ('failure' )
607
+ _failures = test_case_element .getElementsByTagName ('failure' )
555
608
if failure_message or failure_output :
556
- tc .assertTrue (len (failures ) > 0 )
609
+ tc .assertTrue (len (_failures ) > 0 )
610
+ elif failures :
611
+ tc .assertEqual (len (failures ), len (_failures ))
557
612
else :
558
- tc .assertEqual (0 , len (failures ))
613
+ tc .assertEqual (0 , len (_failures ))
559
614
560
615
if failure_message :
561
616
tc .assertEqual (
562
- failure_message , failures [0 ].attributes ['message' ].value )
617
+ failure_message , _failures [0 ].attributes ['message' ].value )
563
618
564
- if failure_type and failures :
619
+ if failure_type and _failures :
565
620
tc .assertEqual (
566
- failure_type , failures [0 ].attributes ['type' ].value )
621
+ failure_type , _failures [0 ].attributes ['type' ].value )
567
622
568
623
if failure_output :
569
624
tc .assertEqual (
570
- failure_output , failures [0 ].firstChild .nodeValue .strip ())
625
+ failure_output , _failures [0 ].firstChild .nodeValue .strip ())
626
+
627
+ for failure_exp , failure_r in zip (failures , _failures ):
628
+ tc .assertEqual (failure_r .attributes ['message' ].value , failure_exp ['message' ])
629
+ tc .assertEqual (failure_r .firstChild .nodeValue .strip (), failure_exp ['output' ])
630
+ tc .assertEqual (failure_r .attributes ['type' ].value , failure_exp ['type' ])
571
631
572
- skipped = test_case_element .getElementsByTagName ('skipped' )
632
+ _skipped = test_case_element .getElementsByTagName ('skipped' )
573
633
if skipped_message or skipped_output :
574
- tc .assertTrue (len (skipped ) > 0 )
634
+ tc .assertTrue (len (_skipped ) > 0 )
635
+ elif skipped :
636
+ tc .assertEqual (len (skipped ), len (_skipped ))
575
637
else :
576
- tc .assertEqual (0 , len (skipped ))
638
+ tc .assertEqual (0 , len (_skipped ))
639
+
640
+ for skipped_exp , skipped_r in zip (skipped , _skipped ):
641
+ tc .assertEqual (skipped_r .attributes ['message' ].value , skipped_exp ['message' ])
642
+ tc .assertEqual (skipped_r .firstChild .nodeValue .strip (), skipped_exp ['output' ])
643
+
577
644
578
645
if __name__ == '__main__' :
579
646
unittest .main ()
0 commit comments