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()'似乎没有强制它,可能不得不重新考虑我如何测试它。 –