I have some code that checks that a file is treated differently if some time has passed. In other words, it reacts if the modification time is more than it was before. The code uses os.stat(filename)[stat.ST_MTIME] to do this. The challenge was to mock os.stat so that I can pretend some time has passed without having to wait. Here was my first solution which made running many tests sloooow:
def test_file_changed(self):
filename = 'foo.txt'
expect_timestamp = int(time.time())
...run the unit test with 'expect_timestamp'...
time.sleep(1)
expect_timestamp += 1
...run the unit test with 'expect_timestamp'...
So, here's how I mock os.stat to avoid having to do the time.sleep(1) in the test: