跳转到主要内容

Libfaketime 封装器。

项目描述

Faketime

Faketime 是一个薄薄的 Python 封装,围绕由 Wolfgang Hommel 编写的惊人的 C 库 libfaketime,你可以用它来欺骗 UNIX 进程关于时间和日期是什么。

为什么存在这个包装器?

  • 它提供了一个方便且 Pythonic 的接口,你可以用它来欺骗使用 Python 运行的子进程。
  • 它提供了一个在 Mac OS X 和 Linux 上都相同的 Python 接口(libfaketime 在两者中都以略有不同的方式使用)。
  • 它提供了一个自包含的库,可以安装在任何环境中运行一致的虚拟env - 从软件包管理器安装 libfaketime 可以在不同操作系统和软件包管理器上获得较旧、有错误的版本。

安装

pip install faketime

使用

>>> from commandlib import Command
>>> from faketime import Faketime
>>> from datetime import datetime
>>> faketime = Faketime("currenttime.txt")
>>> datecmd
{'LD_PRELOAD': '/full/path/to/virtualenv/site-packages/faketime/libfaketime.so.1', 'FAKETIME_TIMESTAMP_FILE': '/full/path/to/currenttime.txt'}


>>> datecmd = Command("date").with_env(**faketime.env_vars)
>>> datecmd.run()
[ should print current time ]

>>> faketime.change_time(datetime(2050, 6, 7, 10, 9, 22, 713689))
>>> datecmd.run()
Tue  7 Jun 10:09:21 BST 2050

上述示例显示了如何使用 faketime 与 commandlib 一起使用,尽管可以在字典中使用环境变量与任何命令运行器(例如 Popen)一起使用。

这个库背后的故事是什么?

这个库可用于多种用途,但我主要构建它是为了能够使用 hitchstory 编写测试,同时向 postgres、django 和 celery 撒谎关于日期和时间。

最初我尝试使用 freezegun 来测试 Python 代码,但我意识到它每次只能真正处理一小段代码。此外

  • 如果该代码执行了一个包含其他代码的 Python 进程,那么其他代码将获取 当前 时间而不是冻结时间,从而破坏测试。
  • 它无法伪造,比如,postgres 的时间,所以如果 SQL 查询中嵌入了 datetime 查询,那么就会破坏测试。

项目详情


下载文件

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

源代码分发

faketime-0.9.8.tar.gz (41.8 kB 查看哈希值)

上传时间 源代码

由以下支持

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