Моделирование прохождения времени при модульном тестировании

Я создал CMS с платным доступом + систему выставления счетов для клиента, и мне нужно быть более строгим в своем тестировании.

Я храню все свои данные в ORM Django, и у меня есть куча задач Celery, которые выполняются с разными интервалами, что гарантирует отправку новых счетов и напоминаний о счетах и ​​ограничение доступа, когда пользователи не оплачивают свои счета.

Например, я хотел бы иметь возможность запустить тест, который:

  1. Создает нового пользователя и генерирует счет за X дней доступа к сайту

  2. Имитирует прохождение X + 1 дней, и выполняет все задачи, которые я настроил в Celery.

  3. Проверяет, выставлен ли пользователю новый счет за другие X дней.

Подход KISS, который я придумал до сих пор, заключается в том, чтобы выполнять все тесты на отдельной машине и фактически манипулировать датой/временем на уровне ОС. Таким образом, сценарий тестирования должен:

  1. Установить системную дату на 1 день

  2. Создать нового пользователя и сгенерировать первый счет за X дней доступа

  3. Передвинуть системную дату на 1 день. Запустите все мои задачи сельдерея. Повторяйте, пока не «пройдёт» X + 1 дней.

  4. Убедитесь, что новый счёт-фактура был выставлен.

Это немного неуклюже, но я думаю, что это может сработать. Любые другие идеи о том, как это сделать?

19
задан oivvio 18 May 2012 в 11:48
поделиться