@@ -509,6 +509,9 @@ def test_delattr(self):
509
509
sys .spam = 1
510
510
delattr (sys , 'spam' )
511
511
self .assertRaises (TypeError , delattr )
512
+ self .assertRaises (TypeError , delattr , sys )
513
+ msg = r"^attribute name must be string, not 'int'$"
514
+ self .assertRaisesRegex (TypeError , msg , delattr , sys , 1 )
512
515
513
516
def test_dir (self ):
514
517
# dir(wrong number of arguments)
@@ -801,17 +804,21 @@ def test_filter_pickle(self):
801
804
802
805
def test_getattr (self ):
803
806
self .assertTrue (getattr (sys , 'stdout' ) is sys .stdout )
804
- self .assertRaises (TypeError , getattr , sys , 1 )
805
- self .assertRaises (TypeError , getattr , sys , 1 , "foo" )
806
807
self .assertRaises (TypeError , getattr )
808
+ self .assertRaises (TypeError , getattr , sys )
809
+ msg = r"^attribute name must be string, not 'int'$"
810
+ self .assertRaisesRegex (TypeError , msg , getattr , sys , 1 )
811
+ self .assertRaisesRegex (TypeError , msg , getattr , sys , 1 , 'spam' )
807
812
self .assertRaises (AttributeError , getattr , sys , chr (sys .maxunicode ))
808
813
# unicode surrogates are not encodable to the default encoding (utf8)
809
814
self .assertRaises (AttributeError , getattr , 1 , "\uDAD1 \uD51E " )
810
815
811
816
def test_hasattr (self ):
812
817
self .assertTrue (hasattr (sys , 'stdout' ))
813
- self .assertRaises (TypeError , hasattr , sys , 1 )
814
818
self .assertRaises (TypeError , hasattr )
819
+ self .assertRaises (TypeError , hasattr , sys )
820
+ msg = r"^attribute name must be string, not 'int'$"
821
+ self .assertRaisesRegex (TypeError , msg , hasattr , sys , 1 )
815
822
self .assertEqual (False , hasattr (sys , chr (sys .maxunicode )))
816
823
817
824
# Check that hasattr propagates all exceptions outside of
@@ -1457,8 +1464,11 @@ def test_bug_27936(self):
1457
1464
def test_setattr (self ):
1458
1465
setattr (sys , 'spam' , 1 )
1459
1466
self .assertEqual (sys .spam , 1 )
1460
- self .assertRaises (TypeError , setattr , sys , 1 , 'spam' )
1461
1467
self .assertRaises (TypeError , setattr )
1468
+ self .assertRaises (TypeError , setattr , sys )
1469
+ self .assertRaises (TypeError , setattr , sys , 'spam' )
1470
+ msg = r"^attribute name must be string, not 'int'$"
1471
+ self .assertRaisesRegex (TypeError , msg , setattr , sys , 1 , 'spam' )
1462
1472
1463
1473
# test_str(): see test_unicode.py and test_bytes.py for str() tests.
1464
1474
0 commit comments