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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b12e43b355489b1938ed2b1db4ad2f2c83df5b2bd8c412a026965628669a2160 |
|
MD5 | 035bec2b60063d4008751ae825ab28e4 |
|
BLAKE2b-256 | 2a4f14ae990f996f14c6b229938d1713a2ae067d3added78a2610c6baa65472e |