相关疑难解决方法(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的monkeypatch在导入类而不是模块时不起作用?

同时采用了接受的答案的代码,我是有问题在这里.

代码的工作原理取决于我如何导入datetime.这是为什么?是否可以嘲笑它以便它可以双向工作?

我在用Python 3.4.以下代码说明了该问题:

import pytest
from datetime import datetime

mockdate = datetime(2000, 1, 1, 0, 0, 0)

@pytest.fixture(autouse=True)
def patch_datetime_now(monkeypatch):
    class mydatetime:
        @classmethod
        def now(cls):
            return mockdate

    monkeypatch.setattr('datetime.datetime', mydatetime)

def test_doesnt_work():
    assert datetime.now() == mockdate

def test_works():
    import datetime
    assert datetime.datetime.now() == mockdate
Run Code Online (Sandbox Code Playgroud)

python monkeypatching mocking pytest python-3.x

15
推荐指数
2
解决办法
4230
查看次数

如何monkeypatch内置函数datetime.datetime.now?

我想确保datetime.datetime.now()返回一个特定的日期时间用于测试目的,我该怎么做?我试过pytest的monkeypatch

monkeypatch.setattr(datetime.datetime,"now", nowfunc)
Run Code Online (Sandbox Code Playgroud)

但这给了我错误 TypeError: can't set attributes of built-in/extension type 'datetime.datetime'

python datetime unit-testing monkeypatching pytest

9
推荐指数
1
解决办法
2709
查看次数