让 unittest PySide 和 Maya 在命令行上工作

Getting unittest PySide and Maya on commandline to work

我有一个带有 PySide window 的 Maya 环境,它随 Maya 场景中的任何内容动态生成。我现在正在尝试将其带到命令行并从中进行单元测试。

我一切正常,少了一个问题。 大多数 PyQt/PySide unittest 文档声明要创建这样的 QApplication:

app = QApplication(sys.argv)
win = SomeWindow()
sys.exit(app.exec_())

这不起作用,因为已经有一个从 Maya 构建的 QApplication 实例。

RuntimeError: A QApplication instance already exists.

尽管排除这些步骤会产生此错误并且测试失败:

QWidget: Cannot create a QWidget when no GUI is being used

我知道场景中有一个 QApplication 实例,因为这个命令会产生一个 QApplication 实例:

QApplication.instance()

那么如何将我要创建的 GUI 与该实例相关联?你不能 exec_() Maya 的 运行 QApplication,所以我不确定如何让我的 GUI 看到 QApplication。 _

找到解决方案。问题是我没有在我的所有测试中持有对同一实例的全局引用(多个 Maya 文件被 created/destroyed 一遍又一遍)。

所以在文件顶部的某个地方,你只需写

APP = None

然后在每个测试中,导入另一个文件,将 link 作为单例保存到 QApplication 实例,并设置 APP 等于它