Skip to main content

Frozen date: freeze datetime.now at a known value for testing

Project description

Frozendate suspends time while your tests run.

Frozendate mocks datetime.datetime and datetime.date to provide known times when testing.

Usage

import frozendate

with frozendate.freeze(1999, 1, 1):
    party_like_its_1999()

# freeze relative freezes time relative to the current date...
with freeze_relative(days=-1):
    assert all_my_troubles_seemed_so_far_away()

with freeze(1999, 12, 31):
    # ...or relative to the previous freeze
    with freeze_relative(days=1):
        print "happy new year!"

Normally time doesn’t actually stop when you use freeze – it just starts again from the fixed point you specify, eg:

>>> import frozendate
>>> import datetime
>>> with frozendate.freeze(2000, 1, 1):
...     print datetime.now().replace(microsecond=0)
...     time.sleep(1)
...     print datetime.now().replace(microsecond=0)
...
2000-01-01 00:00:00
2000-01-01 00:00:01

But you can always get the same value back if you pass hard=True:

>>> with frozendate.freeze(2000, 1, 1, hard=True):
...     print datetime.now().replace(microsecond=0)
...     time.sleep(1)
...     print datetime.now().replace(microsecond=0)
...
2000-01-01 00:00:00
2000-01-01 00:00:00

Instead of a context manager there are also regular patch and unpatch functions. These are useful in test case setup/teardown methods:

def setUp(self):
    frozendate.patch(2000, 1, 1)

def tearDown(self):
    frozendate.unpatch()

When you call freeze or patch, it freezes time for all modules found in sys.modules. Sometimes you want to restrict to a few named modules:

frozendate.freeze(modules=['mypackage.mymodule'])

Or patch everything, but exclude a few modules that need the real datetime still:

frozendate.freeze(dontpatch=['somemodule', 'someotherpackage'])

CHANGELOG

Version 0.1.1

  • Fix for ImportErrors when used with six

Version 0.1

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frozendate-0.1.1.tar.gz (5.0 kB view details)

Uploaded Source

File details

Details for the file frozendate-0.1.1.tar.gz.

File metadata

  • Download URL: frozendate-0.1.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for frozendate-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5d011e057a5d2c66896dfe99fe27832372c76d76f3074c214345323777b9ca9e
MD5 3c08d7189d8def0da64546feca0f0cf3
BLAKE2b-256 e8cc9ec1dbe1560d4e2aa9cd0a698247341d8fb209e734827498ea2972a8ce9e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page