Как протестировать tkinter gui без отображения элементов? Это должно сделать тест быстрее. Код ниже работает, но нужно закрыть окна tkinter после запуска теста, чтобы они закончились, есть ли возможность протестировать класс Next
без запуска приложения tkinter или просто не отображать его? Я слышал о unittest.mock
, но когда я пытаюсь смоделировать tk.Tk(), он вылетает. Связано: тест pygtk, unittest gtk, проверка tkinter – старая эксплантация
import tkinter as tk
class Base(tk.Toplevel):
def __init__(self, parent, title):
tk.Toplevel.__init__(self.parent)
self.transient(parent)
self.overrideredirect(1)
self.parent = parent
self.title = title
color = '#%02x%02x%02x' % (122, 17, 117)
self.canvas = tk.Canvas(self, bg=color, relief='raised')
# etc.
class Next(Base, object):
def __init(self, parent, title, color='white', **kwargs):
Base.__init__(parent, title)
kwargs['cancel'] = self.cancel
kwargs['tk_entry_color'] = color
self.pg = KeyPage(self.canvas, title, **kwargs)
def cancel(self):
self.pg.clean()
И тестовый класс:
class TestNext(unittest.TestCase):
@classmethod
def setUpClass(cls):
pass
@classmethod
def tearDownClass(cls):
pass
def setUp(self):
self.root = tk.Toplevel()
self.title = 'test_next'
self.kwargs = {'cancel': None}
def tearDown(self):
self.next = None
if self.root:
self.root.destroy()
def test_init(self):
page = Next(self.root, self.title, **self.kwargs)
self.root.after(time_in_ms, lambda: self.root.destroy())
работает, но есть ли лучшее решение? - person weis_ss   schedule 17.02.2021