0
パッケージされたオブジェクトの1つの関数からコールバックが呼び出されることをテストしようとしています。しかし、mock.patch.objectは、私が現在のテストケースから関数をモックすることを許可していません。私は、次の(簡体字)コードとテストを持っていると仮定すると:Pythonのunittestingとmock:テストケースのモック関数?
import unittest
from six.moves import cStringIO
from mock import patch
class myclass(object):
def __init__(self, callback):
self.callback = callback
def myfunc(key):
self.callback(key)
# other stuff with key
class MyTest(unittest.TestCase):
def setUp(self):
self.myobj = myobj(self._callback)
self.cache_store = cStringIO()
def _callback(self, key):
self.cache_store.write(key)
self.cache_store.seek(0)
@patch.object('__main__.MyTest', '_callback')
def test_callback_called(self, mock):
self.myobj.myfunc("any string")
self.assertTrue(mock.called)
self.assertEqual(self.cache_store.read(), "any string")
私はエラーに
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/mock/mock.py", line 1297, in patched
arg = patching.__enter__()
File "/usr/local/lib/python3.4/dist-packages/mock/mock.py", line 1369, in __enter__
original, local = self.get_original()
File "/usr/local/lib/python3.4/dist-packages/mock/mock.py", line 1343, in get_original
"%s does not have the attribute %r" % (target, name)
AttributeError: __main__.MyTest does not have the attribute '_callback'
を取得するので、私の質問は:私は、現在のテストケースから機能を模擬することができますか?