Python: Как я смоделирую datetime.utcnow (). Isoformat ()? - PullRequest
1 голос
/ 17 марта 2020

Я хочу смоделировать datetime.utcnow().isoformat() для юнит-тестирования приложения python3 flask.

Я уже проверил сообщение StackOverflow о Python: как мне сменить datetime.utcnow () ? , но не удалось адаптировать его к utcnow().isoformat.().

Я пытался редактировать следующий код, но он не работал.

import pytest
import unittest
from unittest import mock

def fake_datetime(*args, **kwargs):
    class FakeTime:
        @classmethod
        def utcnow(self):
            return "2020-03-17T10:02:01.285418"
    return Faketime

@mock.patch('app.utils.datetime', side_effect=fake_datetime)
class FlaskRoutesTest(unittest.TestCase):
    def setUp(self):
        self.app = app.create_app().test_client()

    def test_app_route_recovered(self, mock_datetime):
        print(mock_get.utcnow().isoformat())

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете использовать pytest-freezegun

Пример кода:

@pytest.mark.freeze_time('2017-05-21')
def test_current_date():
    assert date.today() == date(2017, 5, 21)

Выход

True

Если вы правильно настроите время , он должен показывать вам правильное время формата ISO

...