Pytest – поддельные изменения времени во время тестаPython

Программы на Python
Anonymous
Pytest – поддельные изменения времени во время теста

Сообщение Anonymous »

У меня есть следующий код для установки ложного времени во время тестов.
Я хотел бы изменить время во время теста. То есть тест должен начинаться, например, в 9:00, а затем продолжаться, как если бы сейчас было 10:00.

Код: Выделить всё

from __future__ import annotations

import datetime
import logging

import pytest

LOGGER = logging.getLogger(__name__)

@pytest.fixture(params=[datetime.datetime(2020, 12, 25, 17, 5, 55)])
def patch_datetime_now(request, monkeypatch):
class mydatetime(datetime.datetime):
@classmethod
def now(cls):
return request.param

class mydate(datetime.date):
@classmethod
def today(cls):
return request.param.date()

monkeypatch.setattr(datetime, "datetime", mydatetime)
monkeypatch.setattr(datetime, "date", mydate)

@pytest.mark.usefixtures("patch_datetime_now")
@pytest.mark.parametrize(
"patch_datetime_now", [(datetime.datetime(2020, 12, 9, 11, 22, 00))], indirect=True
)
def test_update_data():
fakeTime = datetime.datetime.now()
# Do some stuff

# Change the fake time

# Do some other stuff
Как изменить фиктивное время во время теста. Datetime используется внутри тестируемого кода, поэтому речь идет не об изменении содержимого переменной «fakeTime», а об изменении времени, возвращаемого макетом datetime.
Может быть, мне нужно изменить полностью издевательский метод, я просто делюсь своим текущим кодом.

Подробнее здесь: https://stackoverflow.com/questions/715 ... uring-test

Вернуться в «Python»