input: Write a python function to implement a stack with push, pop, isEmpty, and peek methods.
  assert test_stack() == True
  
  def test_stack():
      s = Stack()
      assert s.isEmpty() == True
      s.push(1)
      s.push(2)
      s.push(3)
      assert s.peek() == 3
      assert s.pop() == 3
      assert s.pop() == 2
      assert s.isEmpty() == False
      assert s.pop() == 1
      assert s.isEmpty() == True
      return True
output: class Stack:
      def __init__(self):
          self.items = []
  
      def push(self, item):
          self.items.append(item)
  
      def pop(self):
          if not self.isEmpty():
              return self.items.pop()
          raise IndexError("pop from empty stack")
  
      def isEmpty(self):
          return len(self.items) == 0
  
      def peek(self):
          if not self.isEmpty():
              return self.items[-1]
          raise IndexError("peek from empty stack")