具有额外功能的pytest的monkeypatch子类
pytest-monkeyplus的Python项目详细描述
monkeyplus插件是子类monkeypatch并添加 一些额外的功能。
额外功能
monkeyplus有三个额外的方法:patch_osstat,patch_today和 patch_time_ticking。
patch_osstat(path, **osstat_attrs)
修补os.stat很棘手,因为您通常只想修补一个文件, 不是整个文件系统。此外,要正确修补它,必须返回 完整的stat_result结构。patch_osstat处理这些东西。 只要用patch路径和stat属性的关键字参数调用它 您需要,例如:
monkeyplus.patch_osstat('foo/bar', st_mtime=42)
未指定的参数将被分配一个默认值。
patch_today(year, month, day)
修补日期可能很棘手,因为有几个与时间相关的模块, 即datetime和time。如果你想让你的补丁影响整个应用程序 统一地说,您必须修补time模块,而不是datetime模块。 在合适的^{tt16}中转换年/月/日值的算法$ 值是不平凡的,所以重复它会变得很无聊。用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())调用产生不同的结果 结果。注意,这也意味着patches函数将返回int值。
更换MonkeyPatch
monkeyplus是monkeypatch的子类,因此它可以在任何地方使用 monkeypatch已被使用。不必使用不同的函数arg,您可以 通过将其放入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
- 初始版本