基本上我试图这样做:
class SeaLion(object):
def __iter__(self):
return self
def next(self):
...
def train():
sea_lion = SeaLion(...)
for tooth in sea_lion:
.. do something
然后在我的测试文件中我有:
class TestTrain(TestCase):
@patch('module.SeaLion')
def test_train(self, mock_SeaLion):
mock_SeaLion.return_value = [1,2,3]
...
基本上我希望train_function中的sea_lion是一个列表而不是该类的实例。
使用上面的代码,sea_lion是MagicMock(name =' SeaLion()')
答案 0 :(得分:2)
试试这个:
import unittest
from mock import patch
class SeaLion(object):
def __iter__(self):
return self
def next(self):
pass
def train():
sea_lion = SeaLion()
print(repr(sea_lion))
for tooth in sea_lion:
return True
return False
class TestTrain(unittest.TestCase):
@patch('__main__.SeaLion')
def test_train(self, mock_SeaLion):
mock_SeaLion.return_value = [1]
self.assertTrue(train())
if __name__ == '__main__':
unittest.main()
结果:
[1]
.
----------------------------------------------------------------------
Ran 1 test in 0.044s
OK