Модульный тест Python для функции с меткой времени - PullRequest
0 голосов
/ 11 сентября 2018

В модульном тесте для функции, которая выводит метку времени и произносит имя хоста вместе с другими значениями. В модульном тесте, если я добавлю некоторую временную метку и имя хоста в ожидаемом выводе, он потерпит неудачу, так как временная метка из функции будет меняться каждый раз, когда вызывается функция, и имя хоста будет меняться при каждом запуске на другой машине. Какой обходной путь для этого? Буду признателен за ваш вклад.

вывод из функции:

{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
# and it can change every time we run it

но эта дата и время меняются в зависимости от времени и машины

ожидаемый результат, который, я думаю, я буду использовать в модульном тесте для assertEqual или assertDictEqual:

{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}

Подходит ли какая-нибудь другая проверка утверждений для этой ситуации?

1 Ответ

0 голосов
/ 11 сентября 2018

Вы должны поиздеваться над вызовом datetime.now(), где бы он ни происходил, чтобы дата-время создания всегда представляла собой некоторое постоянное значение, против которого вы можете утверждать во время теста.

Это общее требование, поэтому для него уже есть некоторая поддержка библиотеки - я могу порекомендовать freezegun :

@freeze_time("09-10-2018 23:23:23")
def test_something():
    data = something()
    assert data == {'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
...