2015-10-15 2 views
9

У меня есть код, который зависит от затраченного времени (например: Если 10 минут прошло)заранее время искусственно pytest

Что это лучший способ для имитации этого в pytest? Методы перехвата обезьян в модульном времени?

Пример кода (тестируемый код - немного схематично, но передает сообщение):

current_time = datetime.datetime.utcnow() 
retry_time = current_time + datetime.timedelta(minutes=10) 
#time_in_db represents time extracted from DB 
if time_in_db > retry_time: 
    #perform the retry 
+0

Можете ли вы показать фрагмент кода? Мне любопытно узнать, что вы используете. Я просто хочу убедиться, что у меня есть правильное понимание того, что вы просите. – idjaw

+0

отредактировал оригинальный вопрос – Boaz

ответ

7

FreezeGun, вероятно, самым простым решением.

Пример кода от его ридми:

from freezegun import freeze_time 

@freeze_time("2012-01-14") 
def test(): 
    assert datetime.datetime.now() == datetime.datetime(2012, 01, 14) 
+0

Я просто писал что-то с помощью mock.patch. Неважно! Отлично! – idjaw

+0

, но что, если дата-время находится в производственном коде (а не тестовом коде)? – Boaz

+0

@Boaz. Пока FreezeGun активен, это повлияет как на производственный код, так и на тестовый код. Или я не понимаю ваш вопрос? –

Смежные вопросы