Mocking datetime in Python

Date:

Tags:

It might be that pythonistas really don’t like monkey patching, but as I couldn’t find a quick answer on how to mock time in Python I thought I write down here how I did it.

It’s no big deal really, just replace datetime in the module tested with a local implementation. In my case I wanted to to mock datetime.utcnow and to match the call I created a class with utcnow as a static method.

class TimeStandsStill:
  # define the methods you want mocked
  # Here we have
  @staticmethod
  def utcnow():
    return datetime(2015, 8, 1)


def test_setup_result_without_error():
  my_module.datetime = TimeStandsStill
  assert_equals('2015-08-01T00:00:00',
                my_module.some_method())

Really, not a big deal.