我想用模擬庫來替換datetime.now()
的結果來測試一些邏輯。所以我現在使用mocker
,它工作的很好,但是我遇到了一些問題,或許是bug,所以我想繼續更新。谷歌建議使用fudge
所以......我不能讓他嘲笑datetime.now()
Fudge mocking datetime.now
from one import ClassName
def test_fudge():
import fudge
@fudge.patch('datetime.datetime.now')
def a(dtn):
dtn.expects_call().returns(1)
print 'fudge:', 'yep' if ClassName().one() == 1 else 'nope'
a()
test_fudge()
one.py文件:
from datetime import datetime, timedelta
class ClassName(object):
def one(self):
return datetime.now()
結果:fudge: nope
任何想法?
莫克例如:
import mocker
from one import ClassName
m = mocker.Mocker()
n = m.replace('datetime.datetime')
n.now()
m.result(123)
with m:
print ClassName().one()
one.py是一樣的。 結果:123
謝謝,但類似的代碼與'mocker'完美配合。也許有些骯髒的魔法我稍後會嘗試這個想法,我很抱歉。 – dt0xff
有趣。你可以請添加一個適用於你的問題比較的例子。 –
加入問題主體。 – dt0xff