Для тестирования я хочу издеваться над datetime.datetime.now()
, например здесь а>.
Функция, которую я тестирую, читает таблицу через pyarrow:
import pytest
import pyarrow.parquet as pq
import datetime
mockdate = datetime.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 function_to_test():
date = datetime.datetime.now()
some_table = pq.read_table("abc/def")
return some_table, date
def test_function_to_test():
table, date = function_to_test()
assert date == mockdate
По какой-то причине насмешка над функцией now()
создает очень странную ошибку в pyarrow:
ValueError: datetime.datetime size changed, may indicate binary incompatibility. Expected 48 from C header, got 32 from PyObject
Есть идеи, как это исправить? Спасибо!
datetime.now
; вы издевались над всем классомdatetime
с тем, в котором нет ничего кроме метода класса с именемnow
. - person chepner   schedule 11.01.2021