我正在为一个脚本编写单元测试,该脚本通过commandPort将Python代码发送到Autodesk Maya。该剧本有效;它将代码发送给Maya并执行它。但是,出于测试目的,我想编写一个单元测试,在其setUp()中打开一个带有commandPort的独立(命令行)Maya,我可以发送命令然后再在tearDown()中关闭,这样我就没有了每当我处理脚本时保持真正的Maya应用程序打开。
我该怎么做?
答案 0 :(得分:2)
您无法独立运行commandPort,它依赖于GUI循环。但是,您可以运行一个脚本,使独立侦听套接字,或者使用像zeromq或RPyC这样的远程处理包。 This link包含一些关于如何设置它的提示,并指向一个github gist,它带有一个独立运行的基于html的RPC服务器。
或者,你可以启动一个完整的GUI Maya来控制使用命令端口,尽管这会大大减慢你的测试速度。
答案 1 :(得分:2)
如果您使用的是Linux或Mac,我强烈推荐dcc automation项目(不适用于Windows)。主要是我喜欢它如何无缝地集成到Maya中。
我的单元测试设置只是启动整个GUI maya。我尝试了独立设置,这是不值得的。 C ++单元测试套件仍然使用独立的Maya运行,但启动时间只是阻碍。将Maya GUI留在后台要快得多,每次测试需要启动时,测试套件都会连接到它。更快的反馈。
如果您有兴趣,我在Maya的自动化测试设置上写了一篇更深入的文章 - Automated testing and Maya plugin development。