2015-10-15 10 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

@ बोआज़ - जब तक फ्रीजगुन सक्रिय है, यह उत्पादन कोड और परीक्षण कोड दोनों को प्रभावित करेगा। या क्या मैं आपके प्रश्न को गलत समझ रहा हूं? –

संबंधित मुद्दे