2
我使用unittest
和mock
(Michael Foord的模塊)來測試一些python代碼。在Python單元測試中錄製和聲明一個空模擬列表
我有這樣的事情(這是個可以更清晰地重寫概念的證明,但我真正的代碼需要那樣做foo
功能):
import unittest
from mock import patch
def foo():
my_list = []
class Test(unittest.TestCase):
def test_foo(self):
with patch('__main__.my_list', new=[], create=True) as baz:
baz.extend(['foo', 'bar'])
self.assertEqual(foo(), None)
self.assertListEqual([], baz)
if __name__ == '__main__':
unittest.main()
所以問題是,我baz
在foo()
調用和最後一個斷言失敗後,模擬對象不會相應地改變。
如果我使用foo()
my_list.remove(x)
那麼我可以看到在我的測試情況的變化,但我只是想清空該名單,我不想通過列表中的每個元素,然後將其刪除,不,我想要快速的空操作。
如何在不使用.remove(x)
的情況下檢查我的模擬對象是否被清空,但是使用當前函數foo
的實現?