跳转到主要内容

pytest的monkeypatch子类,具有额外功能

项目描述

monkeyplus插件是一个子类,它扩展了monkeypatch并添加了一些额外功能。

额外功能

monkeyplus有三种额外方法:patch_osstatpatch_todaypatch_time_ticking

patch_osstat(path, **osstat_attrs)

修补os.stat比较棘手,因为你通常只想修补一个文件,而不是整个文件系统。此外,要正确修补它,你必须返回一个完整的stat_result结构。patch_osstat负责处理这些内容。只需用要修补的路径和您想要的stat属性的关键字参数调用它,例如

monkeyplus.patch_osstat('foo/bar', st_mtime=42)

未指定的参数将被分配默认值。

patch_today(year, month, day)

修补日期可能比较棘手,因为有几个与时间相关的模块,即datetimetime。如果你想让你的修补影响整个应用程序,你必须修补time模块,而不是datetime模块。将年/月/日值转换为适合time.time值的算术运算并不简单,所以重复做这些可能会很无聊。用你想让应用程序修补到的日期调用patch_today,例如

monkeyplus.patch_today(2011, 2, 16)

patch_time_ticking(force_int_diff=False)

此monkeypatch确保所有time.time()调用都产生不同的结果(并递增)。在许多平台上,这已经得到了保证,但并非所有平台都是如此。

如果 force_int_diff 为 True,则补丁确保所有 int(time.time()) 调用都产生不同的结果。请注意,这也意味着补丁函数将返回 int 类型的值。

替换 monkeypatch

monkeyplusmonkeypatch 的子类,因此它可以在任何使用 monkeypatch 的地方使用。您不需要使用不同的 funcarg,只需将以下内容放入您的 conftest.py 文件中即可替换 monkeypatch

def pytest_funcarg__monkeypatch(request):
    monkeyplus = request.getfuncargvalue('monkeyplus')
    return monkeyplus

欢迎贡献

目前,monkeyplus 是一个反映我自身需求的插件,但如果您想为它贡献新功能,也欢迎。源代码托管在 http://bitbucket.org/hsoft/pytest-monkeyplus

变更

版本 1.1.0 – 2012-09-18

  • 添加了 patch_time_ticking() 函数。

版本 1.0.0 – 2011-02-16

  • 首次发布

项目详情


下载文件

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

源代码分发

pytest-monkeyplus-1.1.0.tar.gz (3.6 kB 查看哈希值)

上传时间 源代码

支持者