test_keyword.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import keyword
  2. import unittest
  3. class Test_iskeyword(unittest.TestCase):
  4. def test_true_is_a_keyword(self):
  5. self.assertTrue(keyword.iskeyword('True'))
  6. def test_uppercase_true_is_not_a_keyword(self):
  7. self.assertFalse(keyword.iskeyword('TRUE'))
  8. def test_none_value_is_not_a_keyword(self):
  9. self.assertFalse(keyword.iskeyword(None))
  10. # This is probably an accident of the current implementation, but should be
  11. # preserved for backward compatibility.
  12. def test_changing_the_kwlist_does_not_affect_iskeyword(self):
  13. oldlist = keyword.kwlist
  14. self.addCleanup(setattr, keyword, 'kwlist', oldlist)
  15. keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice']
  16. self.assertFalse(keyword.iskeyword('eggs'))
  17. def test_all_keywords_fail_to_be_used_as_names(self):
  18. for key in keyword.kwlist:
  19. with self.assertRaises(SyntaxError):
  20. exec(f"{key} = 42")
  21. def test_async_and_await_are_keywords(self):
  22. self.assertIn("async", keyword.kwlist)
  23. self.assertIn("await", keyword.kwlist)
  24. def test_keywords_are_sorted(self):
  25. self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist)
  26. if __name__ == "__main__":
  27. unittest.main()