跳转到主要内容

在 freeze_time 中包装测试的 fixtures

项目描述

https://img.shields.io/pypi/v/pytest-freezegun.svg See Build Status on Travis CI See Build Status on AppVeyor

在 freeze_time 中包装测试的 fixtures

功能

  • 在测试和 fixtures 中冻结时间

  • 在需要时访问 freezer

安装

您可以通过 pipPyPI 安装“pytest-freezegun”

$ pip install pytest-freezegun

使用方法

使用 freezer fixtures 冻结时间

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

这可以用来移动时间

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

您还可以通过使用 freeze_time 标记来传递 freezegun 的参数

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

您可以将 freezer fixtures 和 freeze_time 标记一起使用,并且它们可以与其他 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)

它们也可以用于基于类的测试

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)

贡献

我们非常欢迎贡献。可以使用 tox 运行测试。之后,您可以使用 coverage combine && coverage html 检查覆盖率。请在提交拉取请求之前尽量保持覆盖率不变。

许可证

根据MIT许可证分发,“pytest-freezegun”是免费和开源软件

问题

如果您遇到任何问题,请提交问题,并提供详细描述。

致谢

Pytest插件是用Cookiecutter以及@hackebrotCookiecutter-pytest-plugin模板生成的。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

pytest-freezegun-0.4.2.zip (9.1 kB 查看哈希值)

上传时间

构建分发

pytest_freezegun-0.4.2-py2.py3-none-any.whl (4.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面