pf

pytest-freezegun

Easily freeze time in pytest test + fixtures

Showing:

Popularity

Downloads/wk

0

GitHub Stars

138

Maintenance

Last Commit

1yr ago

Contributors

9

Package

Dependencies

2

License

MIT

Categories

Readme

================

pytest-freezegun

.. image:: https://img.shields.io/pypi/v/pytest-freezegun.svg :target: https://pypi.python.org/pypi/pytest-freezegun/

.. image:: https://travis-ci.org/ktosiek/pytest-freezegun.svg?branch=master :target: https://travis-ci.org/ktosiek/pytest-freezegun :alt: See Build Status on Travis CI

.. image:: https://ci.appveyor.com/api/projects/status/github/ktosiek/pytest-freezegun?branch=master&svg=true :target: https://ci.appveyor.com/project/ktosiek/pytest-freezegun/branch/master :alt: See Build Status on AppVeyor

Wrap tests with fixtures in freeze_time

Features

  • Freeze time in both the test and fixtures
  • Access the freezer when you need it

Installation

You can install "pytest-freezegun" via pip from PyPI::

$ pip install pytest-freezegun

Usage

Freeze time by using the freezer fixture::

def test_frozen_date(freezer):
    now = datetime.now()
    time.sleep(1)
    later = datetime.now()
    assert now == later

This can then be used to move time::

def test_moving_date(freezer):
    now = datetime.now()
    freezer.move_to('2017-05-20')
    later = datetime.now()
    assert now != later

You can also pass arguments to freezegun by using the freeze_time mark::

@pytest.mark.freeze_time('2017-05-21')
def test_current_date():
    assert date.today() == date(2017, 5, 21)

The freezer fixture and freeze_time mark can be used together, and they work with other fixtures::

@pytest.fixture
def current_date():
    return date.today()

@pytest.mark.freeze_time
def test_changing_date(current_date, freezer):
    freezer.move_to('2017-05-20')
    assert current_date == date(2017, 5, 20)
    freezer.move_to('2017-05-21')
    assert current_date == date(2017, 5, 21)

They can also be used in class-based tests::

class TestDate:

    @pytest.mark.freeze_time
    def test_changing_date(self, current_date, freezer):
        freezer.move_to('2017-05-20')
        assert current_date == date(2017, 5, 20)
        freezer.move_to('2017-05-21')
        assert current_date == date(2017, 5, 21)

Contributing

Contributions are very welcome. Tests can be run with tox_. You can later check coverage with coverage combine && coverage html. Please try to keep coverage at least the same before you submit a pull request.

License

Distributed under the terms of the MIT_ license, "pytest-freezegun" is free and open source software

Issues

If you encounter any problems, please file an issue_ along with a detailed description.

Credits

This Pytest plugin was generated with Cookiecutter along with @hackebrot's Cookiecutter-pytest-plugin template.

.. Cookiecutter: https://github.com/audreyr/cookiecutter .. @hackebrot: https://github.com/hackebrot .. MIT: http://opensource.org/licenses/MIT .. cookiecutter-pytest-plugin: https://github.com/pytest-dev/cookiecutter-pytest-plugin .. file an issue: https://github.com/ktosiek/pytest-freezegun/issues .. pytest: https://github.com/pytest-dev/pytest .. tox: https://tox.readthedocs.io/en/latest/ .. pip: https://pypi.python.org/pypi/pip/ .. _PyPI: https://pypi.python.org/pypi

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100