Вновь принялся за настройку Jenkins, сейчас застрял на процессе запуска команды py.test.
Что есть:
тесты на python + selenium WD + py.test. Из eclipse или просто из консоли все работает.
тесты в репозитории, там же в корне лежит xml, сгенерированная py.test’ом
плагины поставил такие: Jenkins Selenium Plugin, Python Plugin
настройки Job:
Ошибка при сборке такая:
Путь к интерпретатору пытался ручками прописать и оставить пустым, результат тот же. Зашел под юзером jenkins, запустил терминал, ввел py.test - запустился, работает.
Такое ощущение, что python нет в системных путях.
Для того, чтобы проверить.
Попробуйте добавить папку python и python\scripts в системные пути, как шаг в дженкинсе.
Или же укажите полный путь к исполняемому файлу py.test
Как вы устанавливали py.test на сервер, где стоит jenkins?
Для начала попробуйте запустить свой тест напрямую ,а не как юнит тест. В PyCharm - это нажатие правой кнопке в блоке if __name__ == '__main__': и выбор старта, т.е. что-то типа ‘run test’
А вы запускаете в другом блоке, либо кнопкой сверху, она запускает 'Run Unittest in test()'
После этого отпишите какой результат либо скрин приложите, но мне кажется ,что проблема именно в этом
UPD! Проблема с моей стороны ,я неправильно пример оформил. Просто я переименовывал файл HTMLTestRunner в class_HTMLTestRunner. Поэтому в примере замените в строчке runner = class_HTMLTestRunner.HTMLTestRunner на runner = HTMLTestRunner.HTMLTestRunner
Запускал как и советовали. Вылетала ошибка на HTMLTestRunner что нет модуля StringIO Изменил в testrunner: import StringIO на from io import StringIO (Python 3) Так же хотелось бы узнать как указать директорию, куда сохранить отчет
Ошибка повторяется даже после замены на runner = HTMLTestRunner.HTMLTestRunner
При таком запуске понятна ошибка. Вся проблема в том, что я пишу на питоне 2, у вас 3й. Там убрана функция file. Вместо нее необходимо использовать open() Built-in Functions — Python v3.0 documentation
Но честно сказать не знаю ,как будет происходить генерация отчетов под 3им питоном, возможно будут и другие ошибки.
По поводу нахождения отчета. Это и есть путь с названием “TestReport” + “_” + dateTimeStamp + “.html”
Т.е. в данном случае отчет сохранится в текущей директории. А вот так: “D://TestReport” + “_” + dateTimeStamp + “.html”, он сохранится на диске D. А вот так “…/TestReport” + “_” + dateTimeStamp + “.html”, он сохранится на директорию выше вашего скрипта
Пробовал с open() появилась другая ошибка
AttributeError: type object ‘_io.StringIO’ has no attribute ‘StringIO’
Изменил в HTMLTestReport
self.outputBuffer = StringIO.StringIO()
на self.outputBuffer = StringIO()
Вроде бы и ошибок нет. Но формируются пустые html файлы.
У меня вопрос. Должен ли мой предыдущий тест делать запись в отчет. Или этих тестов должно быть несколько?
Проблему решил слегка поправив HTMLTestRunner под Python 3
Некоторые ошибки все же остаются, но отчет строится вполне себе читабельный
Пример оставшейся ошибки
Traceback (most recent call last):
File "C:/Users/z.sejfulaev/Desktop/SeleniumFolder/com_logon_google/LoginInGmail.py", line 34, in <module>
runner.run(suite)
File "C:\Users\z.sejfulaev\Desktop\SeleniumFolder\com_logon_google\HTMLTestRunner.py", line 631, in run
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'