Решил попробовать Ваш пример, но у меня ничего не получилось.
Посмотрите пожалуйста, что я не так делаю?
Для начала попробуйте запустить свой тест напрямую ,а не как юнит тест. В 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
Сейчас при запуске ошибка
Так же хотелось бы узнать как указать директорию, куда сохранить отчет
Запускал как и советовали. Вылетала ошибка на 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 файлы.
У меня вопрос. Должен ли мой предыдущий тест делать запись в отчет. Или этих тестов должно быть несколько?
Опять ошибки:
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?
Проблему решил слегка поправив 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'
Если отсановились на дженкинс, также рекомендую “хак”. Подключить к джобе 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 - вещь!
А обязательно с помощью py.test или nose? Я только изучаю автоматизацию и пишу пока с помощью unittest
Можно так: GitHub - xmlrunner/unittest-xml-reporting: unittest-based test runner with Ant/JUnit like XML reporting.
Но лучше учитесь сразу на py.test, к нему можно прикрутить красивые отчеты Allure и возможностей там по более )