Hello Dan!

Sorry for not having replied to your question so far... Don't overestimate our testing capabilities;-) Below, you can see some example code with a class with multiple tests. Hope it helps...
Aaron

import unittest
import sys

from PySide.QtGui import *
from PySide.QtCore import *
from PySide.QtTest import *


class TestDemo(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        try:
            cls.app = QApplication(sys.argv)
        except:
            pass

    def test_widget_1(self):
        w1 = QPushButton()
        w1.clicked.connect(self.slot)
        QTest.mouseClick(w1, Qt.LeftButton)
        self.assertTrue(self.clicked)

    def test_widget_2(self):
        w2 = QPushButton()
        w2.clicked.connect(self.slot)
        QTest.mouseClick(w2, Qt.LeftButton)
        self.assertTrue(self.clicked)

    def slot(self):
        self.clicked = True


if __name__ == '__main__':
    unittest.main()




Am 29.10.2013 20:33, schrieb Dan McCombs:
Ok, let me ask this question -

Someone out there must be unit testing their PySide code. Could you give an example of a test class with multiple separate tests?

Thanks!

-Dan

--
Dan McCombs
Senior Software Engineer / Dyn
http://dyn.com/

Are you prepared for website disaster? Find out in two minutes:
http://dyn.com/dynedu-disaster-planning/


On Sat, Oct 26, 2013 at 8:01 AM, Dan McCombs <[email protected] <mailto:[email protected]>> wrote:

    Hi Matthew,

    Yes, the first thing I tried was:

       app = QtGui.QApplication([])
       ...
       del app

    But, the next test raises the exception about there already being
    a QApplication instance when it runs that first line. That's why I
    resorted to poking around trying to figure out where PySide is
    keeping track of that original instance causing it to raise that
    exception.

    -Dan


    --
    Dan McCombs
    Senior Software Engineer / Dyn
    http://dyn.com/

    Are you prepared for website disaster? Find out in two minutes:
    http://dyn.com/dynedu-disaster-planning/


    On Fri, Oct 25, 2013 at 3:13 PM, Dan McCombs <[email protected]
    <mailto:[email protected]>> wrote:

        Hey all,

        I've been struggling with unit testing my PySide application.
        My tests run fine, but if I have more than one test, Python
        segfaults on quit. It seems the solution would be to
        destroy/create the QApplication instance on each test run, as
        I've seen people mentioning in the case of PyQT such as:

        
http://stuvel.eu/blog/127/multiple-instances-of-qapplication-in-one-process

        I've tried doing something similar in PySide with the
        following lines in my setUp for each test:

        QtGui.qApp = QtGui.QApplication([])

        And the following in my tearDown:

        QtGui.quit()
        QtGui.qApp = none

        However, the instance still exists (I can get it via
        QtGui.QApplication.instance()) and when the second test setUp
        starts to run, I get an exception that "A QApplication
        instance already exists.".

        How can I fully remove the QApplication instance between tests?

        Thanks,

        -Dan





_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside

_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to