#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
сопровождающему?