Могу ли я использовать Travis-CI с графическим интерфейсом Tkinter? - PullRequest
0 голосов
/ 03 июля 2019

Я бы хотел использовать Travis-CI для программы, которую я делаю в Tkinter, но у меня возникли проблемы с выполнением сборки.

Пример программы TravisTest.py :

import tkinter as tk
from tkinter import ttk

class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        root.title('TEST')

        self.Hi = tk.Label(self, text="Hi!")
        self.Hi.pack()

if __name__ == "__main__":
    root=tk.Tk()
    MainApplication(root).pack(side="top", fill="both", expand=True)
root.mainloop()

.travis.yml :

language: python
python:
  - "3.5"
  - "3.6"
dist: xenial
services:
  - xvfb
script: python TravisTest.py

Программа выглядитчтобы начать нормально, но поскольку он не завершается сам по себе, сборка просто останавливается на 10 минут, прежде чем истечет время ожидания.

$ python TravisTest.py

Нет выходных данныхполученные за последние 10 месяцев, это может указывать на остановленную сборку или что-то не так с самой сборкой.

Проверьте подробности о том, как настроить конфигурацию сборки на: https://docs.travis -ci.com / user / common-build-problems / # Время сборки из-за отсутствия вывода-был получен

Сборка была прекращена

Нужно ли добавить в мой код несколько специфических тестов Travis-CI для самостоятельного выхода?Или я просто не должен использовать Travis-CI для чего-то подобного?

1 Ответ

2 голосов
/ 03 июля 2019

root.mainloop () запускает цикл событий, пока что-то не остановит его. Удалите его, замените его на root.update() и, возможно, root.update_idletasks(), чтобы убедиться, что все действия графического интерфейса выполнены, или организуйте его остановку, добавив что-то вроде root.after(10, root.quit)

Набор тестов Python содержит графические тесты для tkinter, IDLE и turtle. Используя xvfb, они работают в Windows (Appveyor), Linux (Travis) и Mac (MS Azure, которые также запускают тесты в Windows и Linux). Сценарий эквивалентен python -m test, который запускает все модули test.test_xyz. Модули Stdlib не запускаются как «главные».

Тесты IDLE в test_idle не запускают mainloop (). В настоящее время этого избегают, среди прочего, не запуская idlelib.pyshell.main (), которая содержит основной вызов mainloop (). (pyshell.main должен быть реорганизован для удаления большей части всего остального, чтобы разделить функции, которые можно протестировать без вызова mainloop ().) Тесты IDLE, которые создают виджеты, используют invoke, generate_event, update и, для чистых выходов, update_idletasks. Фактические тесты находятся в idlelib.idle_test.test_ *. Есть много с трудом завоеванных знаний о тестировании приложения tkinter, содержащегося в нем. Для проверки частей кода, не относящихся к графическому интерфейсу, помогают фиктивные виджеты.

...