0
我試圖測試一個使用Maya scriptJobs
的庫,並將它們重新分配爲Qt Signals。我遇到了一個問題,我無法測試信號是否正確地重新分配,因爲在Maya完成所有測試功能之後,Maya腳本工作站似乎不運行。如何控制Maya何時執行scriptJobs?
該測試將失敗,因爲在檢查call_count
之前未調用處理程序。
from mock import Mock
from maya import cmds
def test_func():
cmds.currentTime(1)
handler = Mock()
cmds.scriptJob(e=('timeChanged', handler))
# This should trigger the scriptJob, and thus, call the handler
# but it doesn't until all python is finished executing.
cmds.currentTime(2)
assert handler.call_count == 1
如果我定義了處理程序作爲一個全局變量,然後做一個兩步測試,讓我自己獨立運行test_one()
,讓它完成,然後運行test_two()
,它的工作原理。
handler = Mock()
def test_one():
cmds.currentTime(1)
cmds.scriptJob(e=('timeChanged', handler)
cmds.currentTime(2)
def test_two():
assert handler.call_count == 1
反正是有強制瑪雅處理scriptJobs
現在,而不是等到所有的蟒蛇執行完畢?或者,也許有更好的方法來測試呢?
謝謝。是的,'processIdleEvents()'似乎沒有強制它,可能不得不重新考慮我如何測試它。 –