tkinter случайная ошибка во время проверки

#python #tkinter #python-unittest #bug-reporting

Вопрос:

Я разрабатываю tkinter модуль. Это простое приложение, которое меняет цвета в зависимости от темы ОС (темный или светлый). Я использую pyautogui для захвата скриншотов и сравнения их с сохраненными изображениями для моих модульных тестов.

Но у меня случайно появляется следующее окно, когда я запускаю свой тест с помощью команды PYTHONPATH=.. python -m unittest (когда я запускаю его с помощью PyCharm, у меня нет этой проблемы).

снимок экрана случайно появляющегося окна

Вот мое пользовательское утверждение, которое я разработал для тестирования всех своих виджетов:

 def assertScreenshot(self, file_name, function, geometry="600x400 100 100"):
    def after_start():
        screenshot_now = pyautogui.screenshot(region=get_window_region(root)).convert('RGB')
        if not path.isfile(file_path):
            screenshot_now.save(file_path)
        else:
            screenshot_saved = Image.open(file_path).convert('RGB')
            diff = ImageChops.difference(screenshot_now, screenshot_saved)
            if diff.getbbox():
                screenshot_now.save(new_file_path)
                diff.save(diff_file_path)
        root.after(1500, lambda: root.quit())

    file_path = path.join(ScreenshotTestCase.screenshot_dir, file_name   ".png")
    new_file_path = path.join(ScreenshotTestCase.screenshot_diff_dir, file_name   ".png")
    diff_file_path = path.join(ScreenshotTestCase.screenshot_diff_dir, file_name   "_diff.png")
    if path.isfile(new_file_path):
        os.remove(new_file_path)
    if path.isfile(diff_file_path):
        os.remove(diff_file_path)

    root = tk.Tk()
    root.geometry(geometry)

    function(root)

    root.after(1000, after_start)
    root.mainloop()
    self.assertFalse(path.isfile(diff_file_path))
 

А вот пример для Label виджета:

 def test_label(self):
    def create_widget(root):
        label1 = tk.Label(root, text="Hello world")
        label1.pack()
        label2 = tk.Label(root, text="Bonjour tous le monde")
        label2.pack()
    self.assertScreenshot("label", create_widget)
 

У кого-нибудь есть идея, как избежать появления этого окна?
Или мне следует сообщить об ошибке? Если да, то как можно сообщить об этой ошибке tkinter сопровождающему?