【发布时间】:2018-04-23 20:44:49
【问题描述】:
我有以下代码并存储在一个名为run_thread.py的文件中
from mymodule import Builder
def run_thread():
threads = []
for chunk in chunks:
thread = threading.Thread(target=Builder.work, args=(a, b, c))
threads.append(thread)
try:
thread.start()
except:
pass
for thread in threads:
try:
thread.join()
except:
pass
当我尝试在我的单元测试中模拟/修补 Builder.work 时,原来的 Builder.work 仍在运行,这不是我所期望的。
import unittest
from ddt import ddt, data, unpack
from mock import patch
@ddt
class TestRunThread(unittest.TestCase):
@patch('run_thread.Builder.work')
def test_run_thread(self, mock_work):
run_thread()
【问题讨论】:
-
我也试过了,还是一样的问题。
-
好的,试试
@patch('mymodule.Builder.work')而不是@patch('run_thread.Builder.work') -
带有
mock_work.return_value = sth或mock_work.side_effect=[],@patch.object被测试工作
标签: python unit-testing mocking