Let your Python tests travel through time
Project description
FreezeGun: Let your Python tests travel through time
==================================
.. image:: https://secure.travis-ci.org/spulec/freezegun.png?branch=master
FreezeGun is a library that allows your python tests to travel through time by mocking the datetime module.
Usage
------------
Once the decorator or context manager have been invoked, all calls to datetime.datetime.now(), datetime.datetime.utcnow(), and datetime.date.today() will return the time that has been frozen.
Decorator
~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
@freeze_time("2012-01-14")
def test():
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
# Or class based
@freeze_time("2012-01-14")
class Tester(object):
def test_the_class(self):
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
Context Manager
~~~~~~~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
def test():
assert datetime.datetime.now() != datetime.datetime(2012, 01, 14)
with freeze_time("2012-01-14"):
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
assert datetime.datetime.now() != datetime.datetime(2012, 01, 14)
Raw use
~~~~~~~
.. code-block:: python
from freezegun import freeze_time
freezer = freeze_time("2012-01-14 12:00:01")
freezer.start()
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14, 12, 00, 01)
freezer.stop()
Timezones
~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
@freeze_time("2012-01-14 03:21:34", tz_offset=-4)
def test():
assert datetime.datetime.utcnow() == datetime.datetime(2012, 01, 14, 03, 21, 34)
assert datetime.datetime.now() == datetime.datetime(2012, 01, 13, 23, 21, 34)
# datetime.date.today() uses local time
assert datetime.date.today() == datetime.datetime(2012, 01, 13)
Nice inputs
~~~~~~~~~~~
FreezeGun uses dateutil behind the scenes so you can have nice-looking datetimes
.. code-block:: python
@freeze_time("Jan 14th, 2012")
def test_nice_datetime():
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
Warning
-------
For the time being, if you use datetime as `from datetime import datetime; now = datetime.now()` then freezegun module must be imported before the datetime module is ever imported for this to work.
If you use datetime as `import datetime; now = datetime.datetime.now()`, then you're good to go without worrying about import order.
Installation
------------
To install FreezeGun, simply:
.. code-block:: bash
$ pip install freezegun
==================================
.. image:: https://secure.travis-ci.org/spulec/freezegun.png?branch=master
FreezeGun is a library that allows your python tests to travel through time by mocking the datetime module.
Usage
------------
Once the decorator or context manager have been invoked, all calls to datetime.datetime.now(), datetime.datetime.utcnow(), and datetime.date.today() will return the time that has been frozen.
Decorator
~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
@freeze_time("2012-01-14")
def test():
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
# Or class based
@freeze_time("2012-01-14")
class Tester(object):
def test_the_class(self):
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
Context Manager
~~~~~~~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
def test():
assert datetime.datetime.now() != datetime.datetime(2012, 01, 14)
with freeze_time("2012-01-14"):
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
assert datetime.datetime.now() != datetime.datetime(2012, 01, 14)
Raw use
~~~~~~~
.. code-block:: python
from freezegun import freeze_time
freezer = freeze_time("2012-01-14 12:00:01")
freezer.start()
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14, 12, 00, 01)
freezer.stop()
Timezones
~~~~~~~~~
.. code-block:: python
from freezegun import freeze_time
@freeze_time("2012-01-14 03:21:34", tz_offset=-4)
def test():
assert datetime.datetime.utcnow() == datetime.datetime(2012, 01, 14, 03, 21, 34)
assert datetime.datetime.now() == datetime.datetime(2012, 01, 13, 23, 21, 34)
# datetime.date.today() uses local time
assert datetime.date.today() == datetime.datetime(2012, 01, 13)
Nice inputs
~~~~~~~~~~~
FreezeGun uses dateutil behind the scenes so you can have nice-looking datetimes
.. code-block:: python
@freeze_time("Jan 14th, 2012")
def test_nice_datetime():
assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)
Warning
-------
For the time being, if you use datetime as `from datetime import datetime; now = datetime.now()` then freezegun module must be imported before the datetime module is ever imported for this to work.
If you use datetime as `import datetime; now = datetime.datetime.now()`, then you're good to go without worrying about import order.
Installation
------------
To install FreezeGun, simply:
.. code-block:: bash
$ pip install freezegun
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
freezegun-0.1.2.tar.gz
(7.7 kB
view details)
File details
Details for the file freezegun-0.1.2.tar.gz.
File metadata
- Download URL: freezegun-0.1.2.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2513e014704c379b884377aaa2efb23aa70ded0895fac43ff17b199f59e50ea4
|
|
| MD5 |
e17f8b1b3b76dbb3824993040aa9b78f
|
|
| BLAKE2b-256 |
d4120e3483e6b98b8c3d3db78bd81d08295e2eccf8a0521e3e46f5d28356c122
|