Как смоделировать изменение системной даты / времени для целей тестирования? - PullRequest
0 голосов
/ 01 марта 2019

Я использую gitlab-ci для запуска своего набора тестов. В одном тесте я хотел бы смоделировать изменение системной даты (например, перейти на следующий день), чтобы увидеть, все ли работает так, как ожидалось, например:

  • ключи redis удалены (TTL)
  • некоторые файлы записываются с новым «номером запуска», поскольку дата изменилась
  • дата и время рассчитаны нормально
  • ...

Как смоделировать изменение системной даты / времени для целей модульного тестирования?


РЕДАКТИРОВАТЬ :так как моя кодовая база находится на Python, я нашел freezegun и python-libfatketime ;первый может, вероятно, справиться с моим кодом Python, а второй более мощный, поскольку он перехватывает системные вызовы, поэтому теоретически я могу использовать его для тестирования redis TTL, если я запускаю redis после применения исправлений.

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

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

0 голосов
/ 01 марта 2019

При написании (модульного) набора тестов необходимо четко определить тестируемую систему и ее границы.В этом случае ваше приложение относится к тестируемой системе, Redis - нет.

Вещи, которые не относятся к тестируемой системе, должны быть осквернены.Для Python начните здесь: https://docs.python.org/3/library/unittest.mock.html

0 голосов
/ 01 марта 2019

Вы можете переопределить gettimeofday и clock_gettime, чтобы вернуться в любое время.Однако это не повлияет на функции ожидания pthread с таймаутами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...