如何用lis模拟/替换类

2024-09-30 10:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上我是想这样做:

class SeaLion(object):
    def __iter__(self):
        return self
    def next(self):
        ...

def train():
    sea_lion = SeaLion(...)
    for tooth in sea_lion:
        .. do something

在我的测试文件中我有:

^{pr2}$

基本上,我希望train函数中的sea\u lion是一个列表,而不是该类的实例。在

有了上面的代码,sea_nulion就是MagicMock(name='SeaLion()')


Tags: inselfforreturnobjectdeftraindo
1条回答
网友
1楼 · 发布于 2024-09-30 10:37:47

试试这个:

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()

结果:

^{pr2}$

相关问题 更多 >

    热门问题