Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

WebDriver + Python: генерация отчетов

reporting
python
webdriver
Теги: #<Tag:0x00007f7b68e04d28> #<Tag:0x00007f7b68e05430> #<Tag:0x00007f7b68e05bd8>

(iczaur) #21

Решил попробовать Ваш пример, но у меня ничего не получилось.
Посмотрите пожалуйста, что я не так делаю?


(Олег Коледа) #22

Для начала попробуйте запустить свой тест напрямую ,а не как юнит тест. В PyCharm - это нажатие правой кнопке в блоке if __name__ == '__main__': и выбор старта, т.е. что-то типа ‘run test’
А вы запускаете в другом блоке, либо кнопкой сверху, она запускает 'Run Unittest in test()'
После этого отпишите какой результат либо скрин приложите, но мне кажется ,что проблема именно в этом

UPD! Проблема с моей стороны ,я неправильно пример оформил. Просто я переименовывал файл HTMLTestRunner в class_HTMLTestRunner. Поэтому в примере замените в строчке runner = class_HTMLTestRunner.HTMLTestRunner на runner = HTMLTestRunner.HTMLTestRunner


Selenium WD + Python. Скриншот в отчетах
(iczaur) #23

Запускал как и советовали.
Вылетала ошибка на HTMLTestRunner что нет модуля StringIO

Изменил в testrunner:

import StringIO

на

from io import StringIO

Сейчас при запуске ошибка

Так же хотелось бы узнать как указать директорию, куда сохранить отчет


(iczaur) #24

Запускал как и советовали. Вылетала ошибка на HTMLTestRunner что нет модуля StringIO Изменил в testrunner: import StringIO на from io import StringIO (Python 3) Так же хотелось бы узнать как указать директорию, куда сохранить отчет

Ошибка повторяется даже после замены на runner = HTMLTestRunner.HTMLTestRunner


(Олег Коледа) #25

При таком запуске понятна ошибка. Вся проблема в том, что я пишу на питоне 2, у вас 3й. Там убрана функция file. Вместо нее необходимо использовать open() http://docs.python.org/release/3.0/library/functions.html#open
Но честно сказать не знаю ,как будет происходить генерация отчетов под 3им питоном, возможно будут и другие ошибки.
По поводу нахождения отчета. Это и есть путь с названием “TestReport” + “_” + dateTimeStamp + “.html”
Т.е. в данном случае отчет сохранится в текущей директории. А вот так: “D://TestReport” + “_” + dateTimeStamp + “.html”, он сохранится на диске D. А вот так “…/TestReport” + “_” + dateTimeStamp + “.html”, он сохранится на директорию выше вашего скрипта


(iczaur) #26

Пробовал с open() появилась другая ошибка
AttributeError: type object ‘_io.StringIO’ has no attribute ‘StringIO’
Изменил в HTMLTestReport
self.outputBuffer = StringIO.StringIO()
на self.outputBuffer = StringIO()
Вроде бы и ошибок нет. Но формируются пустые html файлы.
У меня вопрос. Должен ли мой предыдущий тест делать запись в отчет. Или этих тестов должно быть несколько?


(iczaur) #27

Опять ошибки:
AttributeError: ‘dict’ object has no attribute ‘has_key’
Нашел “решение”
Python 2.7

print {“a”:1}.has_key(“a”)
True
Python 3

print({“a”:1}.has_key(“a”))

Traceback (most recent call last):
File “tmp.py”, line 1, in
print({“a”:1}.has_key(“a”))
AttributeError: ‘dict’ object has no attribute ‘has_key’

Python 3

print(“a” in {“a”:1})
True

Вообщем большая проблема с совместимостью HTMLTestRunner c Python 3
Может кто знает есть ли HTMLTestRunner с поддержкой Python 3?


(iczaur) #28

Проблему решил слегка поправив 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'

(Dmytro Makhno) #29

Если отсановились на дженкинс, также рекомендую “хак”. Подключить к джобе JUnit Attachments Plugin

И в “делателе скриншотов” написать что-то типа:

print("Screenshot taken: {0} for url: {1}".format(file_name, driver.current_url))
print("[[ATTACHMENT|{path}]]".format(path=file_location))  # for jenkins integration

Если все верно настроили у конкретного теста будет Attachment

В сочетании, с Screenshot on Fail - вещь! :slight_smile:


(Demchenko Dima) #30

А обязательно с помощью py.test или nose? Я только изучаю автоматизацию и пишу пока с помощью unittest


(rmerkushin) #31

Можно так: https://github.com/xmlrunner/unittest-xml-reporting
Но лучше учитесь сразу на py.test, к нему можно прикрутить красивые отчеты Allure и возможностей там по более )


#32

Мы для отчетов используем Allure Jenkins Plugin. Вот пример отчета. + библиотека для питона.