I've got a graphical application codeded with pyqtgraph. I am trying to test it but I have some issues with uncaught exceptions.
Here is a simple example:
Class to test
# from pyqtgraph.Qt import QtCore
from PySide import QtCore
class QtSignalTestClass(QtCore.QObject):
# success = QtCore.pyqtSignal()
# fail = QtCore.pyqtSignal()
success = QtCore.Signal()
fail = QtCore.Signal()
def __init__(self):
QtCore.QObject.__init__(self)
self.text = ''
self.success.connect(self.say_success)
self.fail.connect(self.raise_exception)
def say_success(self):
self.text = 'Test succeeded !'
print(self.text)
def raise_exception(self):
raise Exception('Test failed !')
def test_signal_success(self):
self.success.emit()
def test_signal_fail(self):
self.fail.emit()
def test_raise_exception(self):
self.raise_exception()
UnitTest
import unittest
import time
from istat.eart.test.HTMLTestRunner import HTMLTestRunner
from qt_signal import QtSignalTestClass
class TestQtSignal(unittest.TestCase):
def setUp(self):
self.start = time.time()
self.design_specs = []
# self.main_view = QtSignalTestMainView()
def tearDown(self):
self.duration = time.time() - self.start
# self.main_view.forceClose = True
# self.main_view.close()
def test_standalone_class(self):
"""Test an exception generated inside a pyqtsignal"""
qt_signal_test = QtSignalTestClass()
qt_signal_test.test_signal_success()
qt_signal_test.test_signal_fail() # Should raise the exception
qt_signal_test.raise_exception() # Obviously raises the exception
if __name__ == "__main__":
logFileName_html = '/home/guillaume/work/testdata/Results_Summary.html'
suite = unittest.TestSuite()
suite.addTest(TestQtSignal('test_standalone_class'))
with open(logFileName_html, "w") as outfile:
runner = HTMLTestRunner(
stream=outfile,
verbosity=2,
title='Results',
description='Test Features'
)
runner.run(suite)
I though first it was an issue due to the implementation of the HTMLTestRunner, then with this example I think it was an issue with Qt signals vs. unittest module. That's really annoying because wheread I can test direclty the called method, I cannot verify that the signal calls the right method.
Aucun commentaire:
Enregistrer un commentaire