Acabo de comenzar a aprender sobre TDD, y estoy desarrollando un programa usando una GUI de Tkinter. El único problema es que una vez que se llama al método .mainloop()
, el banco de pruebas se cuelga hasta que se cierra la ventana.¿Cómo ejecuto unittest en una aplicación Tkinter?
Aquí es un ejemplo de mi código:
# 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()
Entonces, ¿cuál es la forma adecuada de aplicaciones de pruebas Tkinter? ¿O es simplemente 'no'?
Gracias!
Después de pensarlo unos días (y trabajar en otros proyectos) tiene mucho más sentido: tener una clase de procesamiento con la que la GUI interactúa debería facilitar la prueba, y quizás también sea más fácil de escribir. –
El ciclo de eventos Tk debe ejecutarse en el hilo principal. Entonces use el hilo generado para las pruebas. – ankostis
¿No es inseguro el hilo Tk? –