在不重启的情况下重新初始化 PyQt5 应用程序用于使用挤压的 GUI 测试

问题描述

是否可以在无需关闭和重新启动的情况下重新初始化(重置)pyqt5 GUI 应用程序?我的意思是将 Pyqt5 应用程序恢复到原始状态(例如删除用户在运行它后所做的所有条目)。

我的问题:我在 Qt 中使用 squish 进行测试。我的 ApplicationUnderTest (AUT) 在这里用作 AttachedApp。现在,当我运行一个测试用例并进行一些记录然后将其关闭时,AUT 仍然具有应用程序的修改状态(所有条目都在前一个测试用例中进行)。现在,当我想记录一个新的测试用例时,它不会像我想要的那样工作,因为我希望每个测试用例都应该被记录和重放,而不依赖于其他测试用例。我知道可以让挤压为每个测试用例重新启动 AUT,因此它会被正确地重新初始化,但这不是我想要的。我想让 Squish 在开始时只运行一次 AUT,然后按使用情况附加 AUT,然后将 AUT 带到每个测试用例的原始状态,而无需重新启动它。

解决方法

在 Qt、PyQt 或任何其他主流编程语言或应用程序运行时系统中,一般没有这样的功能。

“附加到已经运行的应用程序”的这一方面由每个 Squish 用户单独解决,通常是通过在应用程序本身中对此类内部重置的一些支持,或者通过在应用程序中执行必要步骤的脚本代码。 (后者可能会遇到问题,这意味着无论如何应该能够让这样的脚本代码重新启动可附加的应用程序,如果重置失败。)

如果您不想通过脚本代码重置应用程序,并且 AUT 中没有重置它的功能,唯一的选择是重新启动它,但这当然违背了附加到正在运行的应用程序的意图(通常这样做是为了通过减少应用程序启动和关闭的次数来减少运行测试用例/套件所需的时间)。

因此,如果您关心应用程序的启动和关闭时间,而您无法实现这种“重置”,那么您可能应该研究跨多个系统的测试套件/案例的分布式并发执行。