【发布时间】:2015-07-07 16:59:28
【问题描述】:
我们使用 Python Nose 对我们的 GUI 应用程序组件和应用程序逻辑进行单元测试。 Nose 在一个进程中运行所有测试,这对于应用程序逻辑来说不是什么大问题,但对于像 PyQt 这样复杂的 C++/Python 库来说,这是一个问题,因为 Qt 创建了“应用程序范围”状态,并且很难确保清理发生在正确的时间,这样每个测试方法都有一个“干净的 Qt slate”。
所以我宁愿让 Nose 为每个测试方法/函数(或至少标记为需要的那些)启动一个单独的 Python 进程。我意识到这会减慢测试套件的速度,但收益应该超过成本。我已经看到了 Insulate 和 Multiprocess 插件,但都没有这样做(如果发生崩溃,Insulate 只会启动单独的 proc——Multiprocess 只是尝试为 N 个内核使用 N 个进程)。
有什么建议吗?
【问题讨论】:
-
在设置和拆卸功能中启动和退出
QApplication就足够了吗? -
这就是我们所做的,我发现这还不够,可能是因为我们正在使用一些后台线程和计时器。 @sebastian 有时会在测试方法返回后调用来自前面测试的回调。我必须深入挖掘才能弄清楚,运行应用程序本身时这不是问题,这就是为什么我希望为鼻子设置一个每次测试的进程,而不是深入研究只影响单元测试运行的原因在同一个过程中,而不是应用程序本身。
标签: python python-3.x pyqt nose pyqt5