栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

尝试模拟datetime.date.today(),但无法正常工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尝试模拟datetime.date.today(),但无法正常工作

有一些问题。

首先,您使用的方式

mock.patch
不太正确。当用作装饰器时,它
仅在装饰函数内
datetime.date.today
用给定的
Mock
对象替换给定的函数/类(在这种情况下为)。因此,只有在您将是一个不同的功能,不会出现你想要的。
__
today()``datetime.date.today


您真正想要的似乎是这样的:

@mock.patch('datetime.date.today')def test():    datetime.date.today.return_value = date(2010, 1, 1)    print datetime.date.today()

不幸的是,这行不通:

>>> test()Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "build/bdist.macosx-10.6-universal/egg/mock.py", line 557, in patched  File "build/bdist.macosx-10.6-universal/egg/mock.py", line 620, in __enter__TypeError: can't set attributes of built-in/extension type 'datetime.date'

失败是因为Python内置类型是不可变的-
有关更多详细信息,请参见此答案。

在这种情况下,我将自己子化datetime.date并创建合适的函数:

import datetimeclass NewDate(datetime.date):    @classmethod    def today(cls):        return cls(2010, 1, 1)datetime.date = NewDate

现在您可以:

>>> datetime.date.today()NewDate(2010, 1, 1)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号