स्वीकृत उत्तर here के कोड का उपयोग करते समय मुझे समस्याएं आ रही थीं।मॉड्यूल के बजाए कक्षा आयात करते समय पाइथन का बंदरगाह क्यों काम नहीं करता है?
कोड डेटाटाइम के आयात को कैसे करता है इस पर निर्भर करता है। वह क्यों है? क्या यह नकल करना संभव है ताकि यह दोनों तरीकों से काम करे?
मैं Python 3.4
का उपयोग कर रहा हूं।
import pytest
from datetime import datetime
mockdate = datetime(2000, 1, 1, 0, 0, 0)
@pytest.fixture(autouse=True)
def patch_datetime_now(monkeypatch):
class mydatetime:
@classmethod
def now(cls):
return mockdate
monkeypatch.setattr('datetime.datetime', mydatetime)
def test_doesnt_work():
assert datetime.now() == mockdate
def test_works():
import datetime
assert datetime.datetime.now() == mockdate
धन्यवाद, यह उपयोगी है। तो, क्या आप "आयात डेटाटाइम" के बजाय "डेटाटाइम आयात डेटाटाइम से" के साथ काम करने के किसी भी तरीके से जानते हैं? – rgargente
निश्चित रूप से आपको इसके बजाय 'yourmodule.datetime' पैच करना चाहिए। नकली ढांचे के लिए एक नज़र डालें: आप 'पैच' को बहुत उपयोगी बना सकते हैं। –
मैंने समाधान के साथ एक नया जवाब बनाया है, लेकिन मुझे अभी भी लगता है कि यह उचित है कि मैं आपके उत्तर को स्वीकार्य मानता हूं। चीयर्स! – rgargente