Python turşu "aynı nesne değil" hatalarını görmezden gelmenin bir yolu var mı?Python turşu "yok aynı nesne" hatalarını görmezden gelmenin bir yolu var
datetime.utcnow() üreten sonuçların üzerinde ince taneli kontrole sahip olmak için Mock kullanarak bir test yazıyorum. Kullandığım kod zaman duyarlı olduğundan, mock's yaması test etmeyi kolaylaştırıyor.
Aynı testlerin nesneleri seçmesi ve sonuçları uzak bir sunucuya göndermesi gerekir. Testin amacı için standart bir datetime uzaktan sunucu tarafından alındığı ve alındığı her şey iyi olurdu.
Maalesef turşu modülü aşağıdaki hatayla barfing edilir: Buradahatayı yeniden minimal bir örnektir.Can't pickle <type 'datetime.datetime'>: it's not the same object as datetime.datetime
from mock import patch
from datetime import datetime
import pickle
class MockDatetime(datetime):
frozendt = datetime(2011,05,31)
@classmethod
def advance(cls, **kw):
cls.frozendt = cls.frozendt + timedelta(**kw)
@classmethod
def utcnow(cls):
return cls.frozendt
@patch('datetime.datetime', MockDatetime)
def test():
pickle.dumps(datetime.utcnow())
if __name__ == '__main__':
test()
ben turşu zaman MockDatetime bir datetime olduğunu düşünerek içine turşu makine kandırabilecek __reduce__
ve __getstate__
yöntemlerden bazıları açılan var mı? belgelerinde where to patch bölümünde baktığımızda