bpo-35899: Support of empty and weird strings by Enum by matrixise · Pull Request #11840 · python/cpython

Building on @tirkarthi's comment, I'd like to offer alternative tests that would test both empty and "weird" strings while also aligning more with the existing unittest layout in test_enum.py. I propose the following unittest functions to be entered starting at line 762 in the original test_enum.py file:

def test_programmatic_function_string_list_with_empty_string(self):
     SummerMonth = Enum('SummerMonth', ['june', 'july', ''])
     lst = list(SummerMonth)
     self.assertEqual(len(lst), len(SummerMonth))
     self.assertEqual(len(SummerMonth), 3, SummerMonth)
     self.assertEqual(
             [SummerMonth.june, SummerMonth.july, getattr(SummerMonth, '')],
             lst
             )
    for i, month in enumerate(['june', 'july', ''], 1):
        e = SummerMonth(i)
        self.assertEqual(int(e.value), i)
        self.assertNotEqual(e, i)
        self.assertEqual(e.name, month)
        self.assertIn(e, SummerMonth)
        self.assertIs(type(e), SummerMonth)
 
def test_programmatic_function_string_list_with_weird_string(self):
    SummerMonth = Enum('SummerMonth', ['june', 'july', '!'])
    lst = list(SummerMonth)
    self.assertEqual(len(lst), len(SummerMonth))
    self.assertEqual(len(SummerMonth), 3, SummerMonth)
    self.assertEqual(
            [SummerMonth.june, SummerMonth.july, getattr(SummerMonth, '!')],
            lst
            )
    for i, month in enumerate('june july !'.split(), 1):
        e = SummerMonth(i)
        self.assertEqual(int(e.value), i)
        self.assertNotEqual(e, i)
        self.assertEqual(e.name, month)
        self.assertIn(e, SummerMonth)
        self.assertIs(type(e), SummerMonth)