4
スレッドではMock.call_countが正しく動作しないようです。例えば:mock.call_countのスレッドセーフなバージョン
import threading
import time
from mock import MagicMock
def f():
time.sleep(0.1)
def test_1():
mock = MagicMock(side_effect=f)
nb_threads = 100000
threads = []
for _ in range(nb_threads):
thread = threading.Thread(target=mock)
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
assert mock.call_count == nb_threads, mock.call_count
test_1()
このコードは、次のような出力生成:
Traceback (most recent call last):
File "test1.py", line 24, in <module>
test_1()
File "test1.py", line 21, in test_1
assert mock.call_count == nb_threads, mock.call_count
AssertionError: 99994
をIコードのマルチスレッド部分内call_count
(または類似の)を使用することができる方法はありますか?私はMagicMockを自分で書き直す必要がないようにしたいと思います...