相关疑难解决方法(0)

试图模拟datetime.date.today(),但不能正常工作

谁能告诉我为什么这不起作用?

>>> import mock
>>> @mock.patch('datetime.date.today')
... def today(cls):
...  return date(2010, 1, 1)
...
>>> from datetime import date
>>> date.today()
datetime.date(2010, 12, 19)
Run Code Online (Sandbox Code Playgroud)

也许有人可以建议一个更好的方法?

python testing datetime mocking

137
推荐指数
12
解决办法
7万
查看次数

如何在类方法中模拟python的datetime.now()进行单元测试?

我正在尝试为具有以下方法的类编写测试:

import datetime
import pytz

class MyClass:
    def get_now(self, timezone):
        return datetime.datetime.now(timezone)

    def do_many_things(self, tz_string='Europe/London'):
        tz = pytz.timezone(tz_string)
        localtime_now = self.get_now(tz)
        ...
        return things
Run Code Online (Sandbox Code Playgroud)

我想测试它,为此我需要确保datetime.datetime.now()调用返回可预测的内容.

我一直在阅读很多在测试中使用Mock的例子,但是没有发现任何我需要的东西,我无法弄清楚如何在我的测试中使用它.

我把get_now()方法分开了,以防它更容易嘲笑,而不是datetime.datetime.now(),但我仍然难倒.有关如何使用Mock为此编写UnitTests的任何想法?(这一切都在Django,fwiw;我不确定这是否会对这种情况产生影响.)

python testing django unit-testing mocking

38
推荐指数
4
解决办法
2万
查看次数

标签 统计

mocking ×2

python ×2

testing ×2

datetime ×1

django ×1

unit-testing ×1