【发布时间】:2022-11-04 03:34:48
【问题描述】:
我正在尝试为 pyqt5 应用程序进行一些单元测试。问题是我不能在一个测试套件中运行多个测试,因为我没有正确清理应用程序和每个测试的结束。
class MainWindowTest(QMainWindow):
def __init__(self, widgetTypeUnderTest=None, model=None):
super().__init__()
self.widgetTypeUnderTest = widgetTypeUnderTest
self.model = model
# setting title
self.setWindowTitle("AccosTest")
self.setGeometry(100, 100, 500, 600)
self.mainWindowLayout = QHBoxLayout()
# container widget for everything else
widget = QWidget()
widget.setLayout(self.mainWindowLayout)
self.setCentralWidget(widget)
self.show()
class Tests(unittest.TestCase):
def setUp(self) -> None:
self.app = QApplication(sys.argv)
def tearDown(self) -> None:
self.app.exit()
def test(self):
mainWindow = MainWindowTest()
def test2(self):
mainWindow = MainWindowTest()
单独运行 Tests.test1 或 Tests.test2 会执行所需的操作,尽管这可能是因为第二个 QApplication 尚未启动。当同时运行两个测试时,我得到一个段错误。
是否有人知道在每次测试后正确拆除QApplication 的正确命令,因为self.app.exit() 似乎没有起到作用。谢谢!
编辑
你认为更好的策略是有两个线程。一个会启动主循环sys.exit(self.app.exec()),另一个会等待一段时间然后调用exit?
【问题讨论】:
-
不...更好的策略是在测试套件期间保持相同的应用程序打开
标签: qt unit-testing user-interface pyqt5