Datetime.date.today () की नकल करने की कोशिश की जा रही है, लेकिन काम नहीं कर रहा है


158

क्या कोई मुझे बता सकता है कि यह काम क्यों नहीं कर रहा है?

>>> import mock
>>> @mock.patch('datetime.date.today')
... def today(cls):
...  return date(2010, 1, 1)
...
>>> from datetime import date
>>> date.today()
datetime.date(2010, 12, 19)

शायद कोई बेहतर तरीका सुझा सके?


1
mockलाइब्रेरी के डॉक्स : voidspace.org.uk/python/mock/examples.html#partial-mocking
guettli

जवाबों:


124

कुछ समस्याएं हैं।

सबसे पहले, जिस तरह से आप उपयोग कर रहे हैं mock.patchवह बिल्कुल सही नहीं है। जब एक डेकोरेटर के रूप में इस्तेमाल किया, यह देखते हुए समारोह / वर्ग (इस मामले में, बदल देता है datetime.date.today) एक साथ Mockवस्तु केवल सजाया समारोह के भीतर । तो, केवल भीतर अपने today()जाएगा datetime.date.todayएक अलग समारोह है, जो तुम क्या चाहते हो करने के लिए प्रकट नहीं होता हो।

क्या आप वास्तव में चाहते हैं कि इस तरह से अधिक हो सकता है:

@mock.patch('datetime.date.today')
def test():
    datetime.date.today.return_value = date(2010, 1, 1)
    print datetime.date.today()

दुर्भाग्य से, यह काम नहीं करेगा:

>>> test()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.6-universal/egg/mock.py", line 557, in patched
  File "build/bdist.macosx-10.6-universal/egg/mock.py", line 620, in __enter__
TypeError: can't set attributes of built-in/extension type 'datetime.date'

यह विफल हो जाता है क्योंकि पायथन में निर्मित प्रकार अपरिवर्तनीय हैं - अधिक विवरण के लिए इस उत्तर को देखें।

इस मामले में, मैं खुद को डेटाटाइम से हटा दूंगा और सही फ़ंक्शन बनाऊंगा:

import datetime
class NewDate(datetime.date):
    @classmethod
    def today(cls):
        return cls(2010, 1, 1)
datetime.date = NewDate

और अब आप कर सकते हैं:

>>> datetime.date.today()
NewDate(2010, 1, 1)

13
एक अच्छा समाधान, लेकिन दुर्भाग्य से अचार के साथ समस्याएं होती हैं।
बैकेक

14
हालांकि यह उत्तर अच्छा है, एक वर्ग बनाए बिना डेटाइम का मजाक उड़ाना संभव है: stackoverflow.com/a/25652721/117268
Emil Stenström

आप datetimeइसका मूल मूल्य कैसे पुनर्स्थापित करेंगे ? के साथ deepcoppy?
ओलेग बेलुशोव

5
बहुत आसान करने के लिए:patch('mymodule.datetime', Mock(today=lambda: date(2017, 11, 29)))
विक्टर गैवरो

1
अधिक आसान करने के लिए @patch('module_you_want_to_test.date', Mock( today=Mock(return_value=datetime.date(2017, 11, 29))))
Jonhy Beebop

163

एक अन्य विकल्प https://github.com/spulec/freezegun/ का उपयोग करना है

इसे स्थापित करो:

pip install freezegun

और इसका उपयोग करें:

from freezegun import freeze_time

@freeze_time("2012-01-01")
def test_something():

    from datetime import datetime
    print(datetime.now()) #  2012-01-01 00:00:00

    from datetime import date
    print(date.today()) #  2012-01-01

यह अन्य मॉड्यूल से विधि कॉल में अन्य डेटाटाइम कॉल को भी प्रभावित करता है:

other_module.py:

from datetime import datetime

def other_method():
    print(datetime.now())    

main.py:

from freezegun import freeze_time

@freeze_time("2012-01-01")
def test_something():

    import other_module
    other_module.other_method()

और अंत में:

$ python main.py
# 2012-01-01

13
एक बहुत ही उपयोगी पुस्तकालय
शॉन

3
यदि आप अपने फ्रीजगंज परीक्षणों को धीरे-धीरे चलाते हैं, तो आप पायथन- लिबफाकटाइम को भी आज़मा सकते हैं ।
साइमन वेबर

महान पुस्तकालय, लेकिन दुर्भाग्य से Google App Engine NDB / Datastore के साथ अच्छा नहीं खेलता है।
ब्रांडीज

मुझे लगता है कि "फ्रीजगंज" एक पुस्तकालय का नाम है। मैं वास्तव में अजगर देवों से प्यार करता हूँ! :-D
मिकी

काम करता है, लेकिन फ्रीजगंज धीमा लगता है, खासकर यदि आपके पास मौजूदा समय के लिए कई कॉल के साथ जटिल तर्क है।
एंड्री बिल्लाक

115

इसके लायक क्या है, इसके लिए Mock डॉक्स datetime.date.today के बारे में विशेष रूप से बात करते हैं, और डमी क्लास बनाए बिना ऐसा करना संभव है:

https://docs.python.org/3/library/unittest.mock-examples.html#partial-mocking

>>> from datetime import date
>>> with patch('mymodule.date') as mock_date:
...     mock_date.today.return_value = date(2010, 10, 8)
...     mock_date.side_effect = lambda *args, **kw: date(*args, **kw)
...
...     assert mymodule.date.today() == date(2010, 10, 8)
...     assert mymodule.date(2009, 6, 8) == date(2009, 6, 8)
...

2
यह वास्तव में मेरे लिए काम नहीं किया। हालांकि मैं प्रवेश का पता लगाने में प्रयास की सराहना करता हूं।
प्रद्योत

8
पैच समारोह में "मायमॉडल" का क्या अर्थ है?
seufagner

4
"आंशिक मॉकिंग" के तहत यहां लिंक मिला
लियो सी हान

3
@seufagner mymodule को voidspace.org.uk/python/mock/patch.html#where-to-patch पर बल्कि भ्रमित करने वाले फैशन में समझाया गया है । ऐसा लगता है कि यदि आपका मॉड्यूल उपयोग करता है from datetime import dateतो यह उस मॉड्यूल का नाम है जहां from datetime import dateऔर कॉल date.today()प्रकट होता है
danio

1
धन्यवाद। काम किया! उदाहरण: mock.patch ('test.views.datetime') mock_date के रूप में: mock_date.today.return_value = datetime.datetime (2016, 9, 18) mock_date-side_effect = lambda * args, ** kw: date (* args) , ** kw)
लैट्रोवा

36

मुझे लगता है कि मैं इसके लिए थोड़ी देर से आया था, लेकिन मुझे लगता है कि यहां मुख्य समस्या यह है कि आप datetime.date.today को सीधे पैच कर रहे हैं और प्रलेखन के अनुसार, यह गलत है।

आपको उदाहरण के लिए परीक्षण किए गए फ़ंक्शन में फ़ाइल में आयात किए गए संदर्भ को पैच करना चाहिए।

मान लीजिए कि आपके पास एक फंक्शंन फ़ाइल है जहाँ आपके पास निम्नलिखित हैं:

import datetime

def get_today():
    return datetime.date.today()

फिर, आपके परीक्षण में, आपके पास कुछ ऐसा होना चाहिए

import datetime
import unittest

from functions import get_today
from mock import patch, Mock

class GetTodayTest(unittest.TestCase):

    @patch('functions.datetime')
    def test_get_today(self, datetime_mock):
        datetime_mock.date.today = Mock(return_value=datetime.strptime('Jun 1 2005', '%b %d %Y'))
        value = get_today()
        # then assert your thing...

उम्मीद है कि यह थोड़ा मदद करता है।


यह बहुत सम्मोहक लगता है, लेकिन मैं इसे चलाने (थ्रो ए NameError: name 'datetime' is not defined) के लिए नहीं मिल सकता । में datetime.strptimeसंदर्भ कहाँ हैMock(return_value=...)यदि आप datetimeअपनी परीक्षण फ़ाइल में आयात नहीं कर रहे हैं तो से आता है ? अद्यतन: यह ठीक है, मैं अभी आगे गया और datetimeपरीक्षण फ़ाइल में मॉड्यूल आयात किया । मुझे लगा कि चाल कुछ थी कि आप datetimeपरीक्षण फ़ाइल से संदर्भ कैसे छिपा रहे हैं ।
imrek

@DrunkenMaster मुझे एक उदाहरण देखना होगा कि आप क्या कर रहे थे और आप किस संदर्भ का मजाक उड़ा रहे थे। कर रहे थेimport datetime या from datetime import strptime? यदि आप पहले एक कर रहे थे, तो आपको मॉक करना होगा datetimeऔर करना होगा mocked_datetime.strptime.return_value = whatever, बाद में एक है, आपको सीधे उस फ़ाइल में स्ट्रैप्टम संदर्भ को मॉक करना होगा जहां परीक्षण किया गया तरीका रहता है।
iferminm

@israelord मेरे कहने का मतलब यह है कि आपका अंतिम कोड स्निपेट (परीक्षण फ़ाइल) Mock(return_value=datetime...)काम करने के लिए डेटाटाइम संदर्भ के लिए एक आयात याद कर रहा है।
imrek

32

डैनियल जी के समाधान में जोड़ने के लिए :

from datetime import date

class FakeDate(date):
    "A manipulable date replacement"
    def __new__(cls, *args, **kwargs):
        return date.__new__(date, *args, **kwargs)

यह एक ऐसा वर्ग बनाता है, जो त्वरित होने पर, एक सामान्य डेटाटाइम.डेट ऑब्जेक्ट लौटाएगा, लेकिन जिसे बदला भी जा सकता है।

@mock.patch('datetime.date', FakeDate)
def test():
    from datetime import date
    FakeDate.today = classmethod(lambda cls: date(2010, 1, 1))
    return date.today()

test() # datetime.date(2010, 1, 1)

2
यहां बहुत सावधान रहें - आपको संस्करण से उपयोग करना होगा, अन्यथा यदि आप datetime.date (या डेटाटाइम या अन्य) का उपयोग करते हैं तो आपको अजीब लग सकता है। IE - स्टैक गहराई तब पहुंची जब आपका नकली नया खुद कॉल करता है।
डैनी स्टेपल

: यदि नकली वस्तु में अपने स्वयं के मॉड्यूल है आपको लगता है कि समस्या नहीं होगी dpaste.com/790309 । हालांकि, भले ही यह मॉकडाउन फ़ंक्शन के समान मॉड्यूल में हो, यह आयात नहीं करता date/ datetimeस्वयं करता है, यह विश्व स्तर पर उपलब्ध चर का उपयोग करता है, इसलिए कोई समस्या नहीं होनी चाहिए: dpaste.com/790310
eternicode

एक कम संक्षिप्त विवरण यहां पाया जा सकता है: williamjohnbert.com/2011/07/…
ezdazuzena

9

मैंने कुछ दिन पहले भी ऐसी ही स्थिति का सामना किया था, और मेरा समाधान यह था कि परीक्षण करने के लिए मॉड्यूल में एक फंक्शन को परिभाषित किया जाए और केवल इसका मजाक उड़ाया जाए:

def get_date_now():
    return datetime.datetime.now()

आज मुझे फ्रीजगुन के बारे में पता चला , और यह इस मामले को खूबसूरती से कवर करता है

from freezegun import freeze_time
import datetime
import unittest


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

9

मेरे लिए सबसे आसान तरीका यह कर रहा है:

import datetime
from unittest.mock import Mock, patch

def test():
    datetime_mock = Mock(wraps=datetime.datetime)
    datetime_mock.now.return_value = datetime.datetime(1999, 1, 1)
    with patch('datetime.datetime', new=datetime_mock):
        assert datetime.datetime.now() == datetime.datetime(1999, 1, 1)

इस समाधान के लिए चेतावनी: वसीयत datetime moduleसे सभी कार्यक्षमता target_moduleकाम करना बंद कर देगी।


1
यह वास्तव में अच्छा और संक्षिप्त है। लाइन datetime_mock.now = Mock(return_value=datetime(1999, 1, 1)को छोटा भी किया जा सकता था datetime_mock.now.return_value = datetime(1999, 1, 1)। पैच के साथ शुरू करने के बजाय start(), with patch(...):यह सुनिश्चित करने के लिए संदर्भ प्रबंधक का उपयोग करें कि datetimeआपका परीक्षण समाप्त होने पर फिर से नियमित (अनमॉक) व्यवहार करें ।
डर्क

हमेशा समाधान के पक्ष में जो अंतर्निहित पुस्तकालय का उपयोग करते हैं
नाम जी वीयू

@ frx08 क्या मुझे पता है कि इस मज़ाक को कैसे सुलझाया जाए? मेरा मतलब है कि कैसे datetime.datetime.now()अनाकर्षक हो ^ ^?
नाम जी वीयू

खैर इस नकली उपयोग करने के लिए कोशिश कर के बाद - इस समाधान के लिए एक चेतावनी की सभी सुविधाएं है datetime moduleसे target_moduleकाम करना बंद कर देगा।
नम जी वीयू

1
सहमत @ frx08 के साथ () दर्द को कम करेगा। हालांकि अंदर कि सभी तारीख को ब्लॉक, समयसीमा काम करना बंद कर देगी। क्या होगा अगर हमें अब मॉकडाउन करना पड़े लेकिन डेट मैथ अभी भी चल रहा है? क्षमा करें, हमारे पास .now () केवल संपूर्ण डेटाटाइम मॉड्यूल नहीं होना चाहिए।
नाम जी वीयू

7

आप डैनियल जी समाधान के आधार पर, निम्नलिखित दृष्टिकोण का उपयोग कर सकते हैं। यह एक प्रकार की जाँच के साथ नहीं तोड़ने का फायदा है isinstance(d, datetime.date)

import mock

def fixed_today(today):
    from datetime import date

    class FakeDateType(type):
        def __instancecheck__(self, instance):
            return isinstance(instance, date)

    class FakeDate(date):
        __metaclass__ = FakeDateType

        def __new__(cls, *args, **kwargs):
            return date.__new__(date, *args, **kwargs)

        @staticmethod
        def today():
            return today

    return mock.patch("datetime.date", FakeDate)

मूल रूप से, हम C- आधारित datetime.dateवर्ग को अपने स्वयं के अजगर उपवर्ग के साथ बदल देते हैं , जो मूल datetime.dateउदाहरणों का उत्पादन करता है और मूल रूप से isinstance()प्रश्नों का उत्तर देता है datetime.date

इसे अपने परीक्षण में संदर्भ प्रबंधक के रूप में उपयोग करें:

with fixed_today(datetime.date(2013, 11, 22)):
    # run the code under test
    # note, that these type checks will not break when patch is active:
    assert isinstance(datetime.date.today(), datetime.date)

datetime.datetime.now()फ़ंक्शन को मॉक करने के लिए इसी तरह के दृष्टिकोण का उपयोग किया जा सकता है ।


मुझे यकीन नहीं है कि यह पायथन 2.7 में काम करता है। मैं __instancecheck__विधि के साथ एक अधिकतम पुनरावृत्ति गहराई RuntimeError हो रही है।
डैन लोवेनहेर्ज़

यह वास्तव में पायथन 2.7 में काम करता है, और इसने मेरी समस्या को उदाहरण प्रकार की जांच के साथ हल किया, धन्यवाद!
काराथोडोरी

4

सामान्यतया, आपके पास datetimeया शायद होगाdatetime.date एक मॉड्यूल कहीं में आयात किया। विधि का मजाक उड़ाने का एक और प्रभावी तरीका यह होगा कि इसे आयात करने वाले मॉड्यूल पर पैच दिया जाए। उदाहरण:

a.py

from datetime import date

def my_method():
    return date.today()

फिर आपके परीक्षण के लिए, मॉक ऑब्जेक्ट को परीक्षण विधि के तर्क के रूप में पारित किया जाएगा। आप चाहते हैं कि परिणाम मूल्य के साथ नकली सेट करें, और फिर परीक्षण के तहत अपनी विधि को कॉल करें। तब आप यह दावा करेंगे कि आपकी विधि ने वही किया जो आप चाहते हैं।

>>> import mock
>>> import a
>>> @mock.patch('a.date')
... def test_my_method(date_mock):
...     date_mock.today.return_value = mock.sentinel.today
...     result = a.my_method()
...     print result
...     date_mock.today.assert_called_once_with()
...     assert mock.sentinel.today == result
...
>>> test_my_method()
sentinel.today

खतरे के संकेत के लिए एक शब्द ही काफी है। मॉकिंग के साथ ओवरबोर्ड जाना सबसे निश्चित रूप से संभव है। जब आप ऐसा करते हैं, तो यह आपके परीक्षणों को लंबा, समझने में कठिन और बनाए रखने में असंभव बनाता है। इससे पहले कि आप एक विधि को सरल रूप में मॉक करें datetime.date.today, अपने आप से पूछें कि क्या आपको वास्तव में इसका मॉक करने की आवश्यकता है। यदि आपका परीक्षण छोटा है और इस बिंदु पर है और फ़ंक्शन का मज़ाक उड़ाए बिना ठीक काम करता है, तो आप बस उस कोड के आंतरिक विवरण को देख सकते हैं, जिसका आप परीक्षण कर रहे हैं, न कि किसी ऐसी वस्तु की जिसे आप नकली करना चाहते हैं।


2

datetime.date.today()अतिरिक्त बोनस के साथ मॉक करने का एक और तरीका यह है कि बाकी datetimeफ़ंक्शन काम करना जारी रखें, क्योंकि मूल datetimeमॉड्यूल को लपेटने के लिए मॉक ऑब्जेक्ट को कॉन्फ़िगर किया गया है :

from unittest import mock, TestCase

import foo_module

class FooTest(TestCase):

    @mock.patch(f'{foo_module.__name__}.datetime', wraps=datetime)
    def test_something(self, mock_datetime):
        # mock only datetime.date.today()
        mock_datetime.date.today.return_value = datetime.date(2019, 3, 15)
        # other calls to datetime functions will be forwarded to original datetime

wraps=datetimeतर्क पर ध्यान दें mock.patch()- जब foo_moduleअन्य datetimeकार्यों का उपयोग करता है तो उनके अलावा date.today()मूल लिपटे datetimeमॉड्यूल को अग्रेषित किया जाएगा ।


1
शानदार उत्तर, अधिकांश परीक्षण जहां आपको डेट करने की आवश्यकता होगी, आपको डेटाइम मॉड्यूल का उपयोग करने की आवश्यकता होगी
एंटोनी

1

Http://blog.xelnor.net/python-mocking-datetime/ में कई समाधानों पर चर्चा की गई है । संक्षेप में:

नकली वस्तु - सरल और कुशल लेकिन टूटता है आइंस्टीन () चेक:

target = datetime.datetime(2009, 1, 1)
with mock.patch.object(datetime, 'datetime', mock.Mock(wraps=datetime.datetime)) as patched:
    patched.now.return_value = target
    print(datetime.datetime.now())

नकली वर्ग

import datetime
import mock

real_datetime_class = datetime.datetime

def mock_datetime_now(target, dt):
    class DatetimeSubclassMeta(type):
        @classmethod
        def __instancecheck__(mcs, obj):
            return isinstance(obj, real_datetime_class)

    class BaseMockedDatetime(real_datetime_class):
        @classmethod
        def now(cls, tz=None):
            return target.replace(tzinfo=tz)

        @classmethod
        def utcnow(cls):
            return target

    # Python2 & Python3 compatible metaclass
    MockedDatetime = DatetimeSubclassMeta('datetime', (BaseMockedDatetime,), {})

    return mock.patch.object(dt, 'datetime', MockedDatetime)

इस रूप में उपयोग करें:

with mock_datetime_now(target, datetime):
   ....

0

हो सकता है कि आप अपने स्वयं के "आज ()" पद्धति का उपयोग कर सकें जो आपको आवश्यकता होगी, जहां आप पैच करेंगे। Mocking utcnow () के साथ उदाहरण यहां देखे जा सकते हैं: https://bitbucket.org/k_bx/blog/src/tip/source/en_posts/2012-07-13-double-call-hack.rst?at=default



0

मैंने एक कस्टम डेकोरेटर का उपयोग करके @ user3016183 पद्धति लागू की:

def changeNow(func, newNow = datetime(2015, 11, 23, 12, 00, 00)):
    """decorator used to change datetime.datetime.now() in the tested function."""
    def retfunc(self):                             
        with mock.patch('mymodule.datetime') as mock_date:                         
            mock_date.now.return_value = newNow
            mock_date.side_effect = lambda *args, **kw: datetime(*args, **kw)
            func(self)
    return retfunc

मैंने सोचा कि एक दिन किसी की मदद कर सकता हूं ...


0

datetimeमॉड्यूल से जोड़ने के बिना फ़ंक्शन को मॉक करना संभव हैside_effects

import mock
from datetime import datetime
from where_datetime_used import do

initial_date = datetime.strptime('2018-09-27', "%Y-%m-%d")
with mock.patch('where_datetime_used.datetime') as mocked_dt:
    mocked_dt.now.return_value = initial_date
    do()

0

आप में से जो मॉकटर के साथ पाइस्टेस्ट का उपयोग कर रहे हैं, उनके लिए मैं कैसा मजाक datetime.datetime.now()करता हूं, जो मूल प्रश्न से काफी मिलता-जुलता है।

test_get_now(mocker):
    datetime_mock = mocker.patch("blackline_accounts_import.datetime",)
    datetime_mock.datetime.now.return_value=datetime.datetime(2019,3,11,6,2,0,0)

    now == function_being_tested()  # run function

    assert now == datetime.datetime(2019,3,11,6,2,0,0)

निर्दिष्ट तारीख को वापस करने के लिए अनिवार्य रूप से मॉक को सेट करना होगा। आप सीधे डेटाटाइम के ऑब्जेक्ट पर पैच करने में सक्षम नहीं हैं।


0

मैंने इस काम को असली तरीकों के साथ नकली के datetimeरूप में आयात करने realdatetimeऔर उन तरीकों को बदलने के द्वारा किया है :

import datetime as realdatetime

@mock.patch('datetime')
def test_method(self, mock_datetime):
    mock_datetime.today = realdatetime.today
    mock_datetime.now.return_value = realdatetime.datetime(2019, 8, 23, 14, 34, 8, 0)

0

आप इसका datetimeउपयोग करके मज़ाक कर सकते हैं :

मॉड्यूल में sources.py:

import datetime


class ShowTime:
    def current_date():
        return datetime.date.today().strftime('%Y-%m-%d')

अपने में tests.py:

from unittest import TestCase, mock
import datetime


class TestShowTime(TestCase):
    def setUp(self) -> None:
        self.st = sources.ShowTime()
        super().setUp()

    @mock.patch('sources.datetime.date')
    def test_current_date(self, date_mock):
        date_mock.today.return_value = datetime.datetime(year=2019, month=10, day=1)
        current_date = self.st.current_date()
        self.assertEqual(current_date, '2019-10-01')

sourcesआपके पैच डेकोरेटर में क्या है ?
एलेना

प्रिय @ सेलेना, यह याद रखना कठिन है कि मैं लगभग एक साल पहले क्या सोच रहा था))। मुझे लगता है कि मेरा मतलब हमारे ऐप स्रोतों के किसी भी मॉड्यूल से है - बस आपके आवेदन का कोड।
MTMobile

0

CPython वास्तव में एक शुद्ध-पायथन Lib / datetime.py और C- अनुकूलित मॉड्यूल / _datetimemodule.c दोनों का उपयोग करके डेटाटाइम मॉड्यूल को लागू करता है । C- अनुकूलित संस्करण को पैच नहीं किया जा सकता है लेकिन शुद्ध-पायथन संस्करण हो सकता है।

इस कोड में लिब / डेटाटाइम के शुद्ध-पायथन कार्यान्वयन के निचले भाग में है :

try:
    from _datetime import *  # <-- Import from C-optimized module.
except ImportError:
    pass

यह कोड सभी सी-अनुकूलित परिभाषाओं को आयात करता है और प्रभावी रूप से सभी शुद्ध-पायथन परिभाषाओं को बदल देता है। हम CPython को ऐसा करके डेटाटाइम मॉड्यूल के शुद्ध-पायथन कार्यान्वयन का उपयोग करने के लिए बाध्य कर सकते हैं:

import datetime
import importlib
import sys

sys.modules["_datetime"] = None
importlib.reload(datetime)

सेटिंग करके sys.modules["_datetime"] = None, हम C-अनुकूलित मॉड्यूल को अनदेखा करने के लिए पायथन को बताते हैं। फिर हम उस मॉड्यूल को पुनः लोड करते हैं जिससे आयात होता है_datetime को विफल करने का । अब शुद्ध-पायथन परिभाषाएँ बनी हुई हैं और उन्हें सामान्य रूप से पैच किया जा सकता है।

यदि आप Pytest का उपयोग कर रहे हैं, तो ऊपर दिए गए स्निपेट को conftest.py में शामिल करें और आप datetimeसामान्य रूप से ऑब्जेक्ट्स को पैच कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.