python проблем с модульным тестом - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я пытаюсь написать модульный тест для этой_функции

from unittest.mock import MagicMock, patch, call
from datetime import datetime, timezone, tzinfo

def this_function(utc_current_time):
    cst_time = pytz.timezone("US/Central")
    local_current_time = utc_current_time.astimezone(cst_time)
    return local_current_time

мой модульный тест

    def test_get_local_time_for_afterhour_check(self, mock_pytz, mock_datetime):
        utc_current_time = datetime(2020, 4, 16, 16, 22, 32, tzinfo=timezone.utc)

        actual = main.get_local_time_afterhour_emr_check(utc_current_time)
        expected = datetime(2020, 4, 16, 11, 22, 32)

        self.assertEqual(actual, expected)

проблема, с которой я сталкиваюсь, заключается в том, что дата верна, но является действительной также есть дополнительные вещи, которые я предполагаю из pytz

  datetime(2020, 4, 16, 11, 22, 32,tzinfo=<DstTzInfo 'US/Central' CDT-1 day, 19:00:00 DST> 

Я не могу понять, как либо издеваться над ним, либо в мин проверить, что дата и время верны. я пытался издеваться над pytz, но я не мог заставить это работать. Кроме того, не мог понять, как издеваться над timezone.ut c

любая помощь будет отличной. спасибо

1 Ответ

0 голосов
/ 17 апреля 2020

для того, чтобы ваше значение не было часовым поясом, вы можете

actual = this_function(utc_current_time).replace(tzinfo=None)

или вы можете установить часовой пояс для ожидаемого

expected = datetime(2020, 4, 16, 11, 22, 32)
cst_time = pytz.timezone("US/Central")
expected = cst_time.localize(expected)
...