2016-05-18 21 views
3

Ich habe einen Unit-Test, dieRuntime: could not open display

import gtk 

enthält, die Unit-Tests enthält die Signal-Handler und GUI-Klassen zu testen. Das funktioniert gut, wenn ich py.test von der Shell ausführen, wie ich ein X11-Display verbunden habe. Aber wenn ich versuche, tox zu laufen, erhalte ich:

______________________ ERROR collecting tests/test_gui.py ______________________ 
tests/test_gui.py:17: in <module> 
    from rprs_bootstrap.gui import GUI 
src/gui.py:12: in <module> 
    import gtk.glade 
.tox/py27/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:64: in <module> 
    _init() 
.tox/py27/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:52: in _init 
    _gtk.init_check() 
E RuntimeError: could not open display 
!!!!!!!!!!!!!!!!!!!! Interrupted: stopping after 1 failures !!!!!!!!!!!!!!!!!!!! 
=========================== 1 error in 0.34 seconds ============================ 
make: *** [tox] Error 2 

ich einen Xvfb Server aus tox.ini beginnen könnte, aber das scheint unelegant. Irgendwelche Vorschläge?

+0

pytests-xvfb schön scheint, wie Sie in Ihrer Antwort erwähnen, aber warum halten Sie Ihre Tests mit Xvfb unelegant läuft? – bohrax

+0

@bohrax: Es beinhaltet die Installation systemweiter Pakete, die nicht alle Entwickler haben könnten. Es ist noch eine andere verdammte Abhängigkeit, die darauf wartet, die Dinge wie ein böser Kobold mit Unheil in ihren glänzenden, toten, gleichgültigen Augen durcheinander zu bringen. – Sardathrion

+1

Ich hatte zuerst den gleichen mentalen Einwand WRT pytests-xvfb :-), aber ich denke, dass der Vorteil ist, dass Sie pytests-xvfb als Teil der kontrollierten Entwicklungsumgebung im Gegensatz zu einem "systemweiten" Paket behandeln können, obwohl Sie müssen Xvfb installiert haben, um es wirklich zu benutzen? – bohrax

Antwort

2

Verwenden pytests-xvfb die

[...] runs your testsuite with Xvfb to avoid popping up windows during GUI tests or allow them to run on systems without a display (like a CI).