Ho appena iniziato a studiare su TDD e sto sviluppando un programma utilizzando una GUI di Tkinter. L'unico problema è che una volta chiamato il metodo .mainloop()
, la suite di test si blocca fino a quando la finestra non viene chiusa.Come si esegue l'unittest su un'app Tkinter?
Ecco un esempio del mio codice:
# server.py
import Tkinter as tk
class Server(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.mainloop()
# test.py
import unittest
import server
class ServerTestCase(unittest.TestCase):
def testClassSetup(self):
server.Server()
# and of course I can't call any server.whatever functions here
if __name__ == '__main__':
unittest.main()
Allora, qual è il modo appropriato di applicazioni di test Tkinter? O è solo 'non farlo'?
Grazie!
Dopo averci pensato per alcuni giorni (e lavorando su altri progetti), questo ha molto più senso: avere una classe di elaborazione con cui la GUI si interfaccia dovrebbe rendere più facile testare, e forse anche più facile scrivere. –
Il ciclo di eventi Tk deve essere eseguito nella thread principale. Quindi usa il thread generato per i test. – ankostis
Non è TK thread-non sicuro? –