2016-12-15 10 views
0

(обратите внимание, я сомневаюсь, что это относится только к PyQt, поэтому я с тегами Qt тоже)PyQt набор тестов не может загадочно Дженкинс, работает безотказно из командной оболочки Windows,

У нас есть 2 тестовых наборов (назовем их А и B), что мы бежим с pytest на наших Девы рабочих станциях:

python -m pytest -c configfile -s -v A 
python -m pytest -c configfile -s -v B 

Suite B (и только один на один) проверяет наши компоненты PyQt; В нем нет PyQt. Мы определили проект A в Jenkins (версия 1.658 битвы) для запуска Suite A: он работает без проблем в Jenkins. Мы сделали то же самое, определили проект B в Jenkins, чтобы запустить Suite B: после многих тестов он прерывается с сообщением журнала SYSTEM и сообщением WARNING из Qt (поймано путем установки обработчика через QtCore.qInstallMessageHandler()). Журнал Дженкинс, который захватывает стандартный вывод тестового набора B является:

SYSTEM log message from Qt: WindowCreationData::create: CreateWindowEx failed (Not enough storage is available to process this command.) 
WARNING log message from Qt: Failed to create platform window for QWidgetWindow(0x705d260, name="FramedPartWidgetWindow") with flags QFlags<Qt::WindowType>(Window|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint) (context: category=default) 
Build step 'Execute Windows batch command' marked build as failure 

Последняя строка выводится Дженкинс сценарий запуска набора тестов B.

На машине Дженкинс (Про 64-битную платформу Windows 7, btw), который запускает тестовые наборы, я могу открыть командную оболочку Windows, и, если я буду запускать тестовые пакеты, оба тестовых набора запускаются без проблем. Затем я открываю веб-браузер, перехожу на страницу проекта Jenkins для пакета B и нажимаю «Build now»: это выполняется так же, как я запускал из командной оболочки, но получаю вышеуказанную ошибку. Если я сделаю 10 сборок, то это будет происходить для разных тестов каждый раз, хотя всегда в одной и той же «области». Если я отфильтровываю тесты в непосредственной близости от места происшествия, тест проходит дальше, но после удаления 4 классов тестов этот способ больше не помогает.

Проблема не в рабочем столе, поскольку я вошел в систему. Одна разница между запуском командной оболочки и запуском Jenkins заключается в том, что из оболочки тестовый набор B открывает многие окна (PyQt) и закрывает их. От Дженкинса я не вижу открытых окон, поэтому они, кажется, открываются на каком-то «виртуальном» рабочем столе. Так что, может быть, проблема на рабочем столе. Нужно ли мне каким-то образом настроить этот виртуальный рабочий стол для увеличения емкости графики?

Ошибка, похоже, указывает на то, что процесс, запущенный Jenkins, заканчивается из некоторого ресурса, но неясно, что: в нем много места на диске и памяти.

У кого-нибудь есть идея, куда идти дальше? Я сделал поиск Google и все, что я мог бы найти в них, они не выглядят слишком многообещающими, хотя я попробую предложения:

Я m не знакомы с тонкостями того, как работает Jenkins-служба на Windows, поэтому я в недоумении.

Обновление 20161219: По-видимому, это известные проблемы с тестированием графического интерфейса пользователя из служб Windows, см. my post on Bitnami Jenkins forum.

+0

Вы рассматривали документы перед тем, как спросить об этом? – alphanumeric

+0

@alphanumeric очень смешно, тем более, если вы сравните поиск [scrollToItem] (http://doc.qt.io/qt-5/qlistwidget.html#scrollToItem) из [QListWidget] (http://doc.qt.io /qt-5/qlistwidget.html), чтобы найти [Проверка GUI в Windows] (https://wiki.jenkins-ci.org/display/JENKINS/Tomcat) из [Установка Windows] (https: //wiki.jenkins -ci.org/display/JENKINS/Installing+Jenkins) (не говоря уже о https://bitnami.com/stack/jenkins, что и было дано нам). – Schollii

ответ

0

По-видимому, это известные проблемы с тестированием графического интерфейса пользователя из служб Windows, see my post on Bitnami Jenkins forum, как это имеет место с использованием стека bitnami jenkins, который мы используем. Как я упоминал в этом сообщении, в нижней части страницы https://wiki.jenkins-ci.org/display/JENKINS/Tomcat говорится, что тестирование GUI в Windows вряд ли будет работать, если Jenkins будет установлен с использованием Tomcat в качестве контейнера, установленного в качестве службы.Единственным вариантом является настройка Tomcat для запуска с помощью Планировщика Windows (вместо службы), но, к сожалению, стек bitnami, который мы используем для jenkins, похоже, не позволяет этого, поэтому единственным решением для нас является установка jenkins с нуля и tomcat в качестве запланированной задачи.

Оказывается, что на ОС Windows (на основе документации по настройке Дженкинс для тестирования GUI с помощью Squish),

  • Установите мастер Дженкинс (это должно быть выполнимо с помощью Bitnami стека в Linux VM)
  • Установить Windows slave. Обязательно не запускайте ведомое устройство в качестве службы Windows при запуске. Службы Windows предназначены для запуска приложений командной строки, но не для запуска приложений, которые состоят из графического интерфейса. Запуск ведомого Jenkins как JNLP с помощью ведомых агентов Launch через Java Web Start работает отлично.
  • Настройка узла внутри Jenkins при управлении Jenkins | Управление узлами | Новый узел.
  • Читать https://kb.froglogic.com/display/KB/Automation+on+Windows

This page кажется агрегировать несколько должностей, связанных с этим вопросом.