/pytest-freezegun

Easily freeze time in pytest test + fixtures

Primary LanguagePythonMIT LicenseMIT

pytest-freezegun

See Build Status on Travis CI 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

All the features can be seen in this example:

@pytest.fixture
def current_date():
    return datetime.now().date()

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

@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)

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

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.