[PySide] Creating and deleting instances of QApplication within unit tests

Dan McCombs dmccombs at dyn.com
Tue Oct 29 20:33:01 CET 2013


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 <dmccombs at dyn.com> 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 <dmccombs at dyn.com> 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
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20131029/27f6aadc/attachment.html>


More information about the PySide mailing list