2015-10-15 19 views
9

I geçen süre bağlıdır koduna sahip (örneğin: 10 dakika geçmişse)avans süresi yapay pytest

pytest bu taklit etmenin en iyi yolu nedir? Maymun yama yöntemleri modül zamanında mı?

Örnek kodu (test kodu - biraz şematik ancak mesajı iletir):

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

size bir kod parçası gösterebilir misin? Ne kullandığınızı merak ediyorum. Sadece ne sorduğunuzu doğru anladığımdan emin olmak istiyorum. – idjaw

+0

özgün soruyu – Boaz

cevap

7

FreezeGun muhtemelen en kolay bir çözümdür. onun Benioku'da gelen

örnek kod:

from freezegun import freeze_time 

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

düzenledi Ben sadece bir şeyler mock.patch kullanarak yazıyordum. Boşver! Bu harika! – idjaw

+0

ama ne zaman datetime üretim kodu (test kodu değil) ise? – Boaz

+0

@Boaz - FreezeGun aktif olduğu sürece, hem üretim kodunu hem de test kodunu etkiler. Yoksa sorunuzu yanlış anladım mı? –