unittest
and mock
(Michael Foord のモジュール) を使用して、いくつかの 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()
を使用するmy_list.remove(x)
とfoo()
、テスト ケースの変更を確認できますが、そのリストを空にしたいだけです。リストのすべての要素を通過させてから削除したくはありません。いいえ、高速な空の操作が必要です。
.remove(x)
を使用せずに、 function の現在の実装を使用して、モック オブジェクトが空になっているかどうかを確認するにはどうすればよいfoo
ですか?