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

python
webdriver
reporting
Теги: #<Tag:0x00007fedb8e31a40> #<Tag:0x00007fedb8e31900> #<Tag:0x00007fedb8e317c0>

(Niko) #1

Здравствуйте! Я только начал знакомиться с автоматизированным тестированием и худо-бедно дело движется вперед. Только не смог найти в интернете инфы насчет генерации отчетов о пройденных тестах.

 

Я использую WD + Python. Хочу поставить запуск по расписанию. Чем лучше всего генерить отчеты и как их смотреть? Попробовал HTMLTestRunner, но так и не удалось получить файл на выходе.

И еще подскажите, плз, самый верный способ запустить эти тесты по графику. Или хотя-бы в какую сторону рыть?

 

Заранее большое спасибо!


[Resolved] Проблема с Publish HTML Reports - Jenkins
(Mykhailo Poliarush) #2

самый лучший способ для вас будет Jenkins http://jenkins-ci.org/, один выстрелом два зайца убьете

там можно настроить регулярный запуск по разным параметрам, которые вам нужно, например, каждый день, или по изменению файлов на файловой структуре или по изменению код в системе версионнонго контроля

и второе, вы можете геренировать junit xml репорты, и указывать их для своего билда, а сам jenkins уже по ним построит отчеты, вам 100% должно хватить

примерно это будет выглядеть где-то так 


(Mykhailo Poliarush) #3

можно конечно попробовать написать свой отчет, пример можете посмотреть тут

https://github.com/davehunt/pytest-mozwebqa/blob/master/pytest_mozwebqa/html_report.py


(Yuriy Rumyantsev) #4

Очень интересна тема Jenkins + Python + SeleniumWD, т.к. занимаюсь этим относительно недавно-очень инетересно как настроить и подружить этих ребят? Может кто-нибудь рассказать подробнее?

Описание того, что есть: есть скрипты на python+WD, установленый(не настроеный Дженкинс).

Нужно: запускать скрипты по расписанию, или после изменения кода, получать отчет о выполенини скриптов(passwd/failed), делать рассылку на почты.


(Mykhailo Poliarush) #5

Ну а есть более конкретные вопросы?

В общем схема выглядит так:

  1. Делаем тесты с помощью py.test или nose
  2. py.test или nose имеют встроенные возможности генерировать junitreport xml файлы на выходе
  3. Все тесты кладем в какой-то репозиторий
  4. Устанавливаем дженкинс и все пакеты python на той машине, где будут проганяться тесты
  5. Создаем билд план и в настройках запуска указываем все те же команды py.test или nose, а выходных результатах указываем, где будет хранится будущий junitreport xml файл.
  6. Да в принципе вот и все

Если будут более конкретные вопросы, с радостью помогу!


(2Elf) #6

Почему бы не использовать стандартный питоновский unittest ?
Опыта работы с с py.test и nose нет, интересно просто. Там проще ?


(Mykhailo Poliarush) #7

Речь идет об генерации отчетов, где вы видели в unittest генерацию html отчетов?


(2Elf) #8

Упс, таки да, вы правы.
Забыл что мы xmlrunner используем вместе с unittest для генерации репортов.


(Mykhailo Poliarush) #9

Ну раз написали, расскажите тогда как у вас обстоят дела с генерацией отчетов и как у вас это реализовано.


(2Elf) #10

https://github.com/lamby/pkg-python-xmlrunner

Ссылочка на модуль
И там же пример прямо:

import unittest
import xmlrunner

    class TestFunctions(unittest.TestCase):
        def test_test1(self):
            pass
    
        def test_test2(self):
            pass
    
    if __name__ == '__main__':
        unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))

output='test-reports' путь к папочке куда XMLки кладуться


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

Если вы не против, то вставлю свои пять копеек.
Например мы используем юниттесты питона + HTMLTestRunner

Отчеты получаются такого вида: ссыль

Ссылочка на github проекта: ссыль

Скажу лично от себя: мне очень нравится данное так сказать дополнение. Очень удобно, наглядно. Правда проект уже можно сказать мертвый, последний коммит был 2 года назад. Но! в текущем состоянии он рабочий, даже очень. Но некоторые допилы делал лично, под нужды проекта.

Использование очень легкое, пример:

import unittest
import HTMLTestRunner
import time

    class TestFunctions(unittest.TestCase):
        def test_test1(self):
            pass

        def test_test2(self):
            pass

    if __name__ == '__main__':
        suite = unittest.TestSuite()
        suite.addTest(unittest.makeSuite(TestFunctions))
        dateTimeStamp = time.strftime('%Y%m%d_%H_%M_%S')
        buf = file("TestReport" + "_" + dateTimeStamp + ".html", 'wb') 
        runner = HTMLTestRunner.HTMLTestRunner(
             stream=buf,
             title='Test the Report', # Заголовок отчета
             description='Result of tests' # Описание отчета
             )
        runner.run(suite)

UPD. Прошу прощения, сразу не заметил, что автор пробовал использовать данный метод. Если желаете, то смогу подсказать/помочь, т.к. активно использую HTMLTestRunner

UPD2. И только сейчас заметил дату первого поста. Простите, утро, не совсем внимателен


(Andrey Kim) #12

Вы случаем не в курсе как настроить его так, чтобы отчеты назывались определенными именами?


(Леонид Свидерский) #13

Здравствуйте, Михаил. Спасибо, что помогаете разбираться в вопросах smile

У меня есть конкретные вопросы по данному топику:

  1. Есть файл xml вида:

<?xml version="1.0" encoding="utf-8"?><testsuite errors="0" failures="0" name="pytest" skips="0" tests="3" time="35.840"><testcase classname="test_Log_in_Wrong_Login_Pin.Untitled" name="test_untitled" time="12.0495848656"/><testcase classname="test_Log_in_successful.Untitled" name="test_Log_in_successful" time="13.5066812038"/><testcase classname="test_Login_Error_all_inputs_empty.Untitled" name="test_all_inputs_empty" time="9.69774913788"/></testsuite>

И голый, ненастроенный Jenkins. Не понял, где его вставлять. Нужно ли какие-то плагины подключать?

  1. Создаем билд план и в настройках запуска указываем все те же команды py.test

2.1 Билд план = job?

2.2 Все те же команды - какие именно и где это вообще указывается? smile

Спасибо!


(Andrey Kim) #14

Нужно создать job. И в шагах после сборки выбрать Publish JUnit test result report, а там указать путь в который у вас xml ки падают.


(Mykhailo Poliarush) #15

Как указал @akim это настраивается в Publish JUnit test results. Я просто покажу картинку.


(Леонид Свидерский) #16

Вновь принялся за настройку Jenkins, сейчас застрял на процессе запуска команды py.test.

Что есть:

  • тесты на python + selenium WD + py.test. Из eclipse или просто из консоли все работает.

  • тесты в репозитории, там же в корне лежит xml, сгенерированная py.test'ом

  • плагины поставил такие: Jenkins Selenium Plugin, Python Plugin

  • настройки Job:

Ошибка при сборке такая:

Путь к интерпретатору пытался ручками прописать и оставить пустым, результат тот же. Зашел под юзером jenkins, запустил терминал, ввел py.test - запустился, работает.

Помогите, пожалуйста, разобраться smile


(Mykhailo Poliarush) #17

Такое ощущение, что python нет в системных путях.
Для того, чтобы проверить.
Попробуйте добавить папку python и python\scripts в системные пути, как шаг в дженкинсе.
Или же укажите полный путь к исполняемому файлу py.test

Как вы устанавливали py.test на сервер, где стоит jenkins?


(Леонид Свидерский) #18

Не знаю, как это делается, если честно.

Устанавливал через pip. Насколько я понимаю, папка py.test вот тут лежит /Library/Python/2.7/site-packages/ Там есть файл pytest.py

Если указать полный путь к pytest.py вот так:

То будет ошибка:


(Mykhailo Poliarush) #19

Под руками сейчас есть только windows, так что пример соответствующий, для windows это делается так

А вообще по правильному, в jenkins есть настройка переменных окружения, пару ссылок для расширения кругозора:

Так на ошибке сказана, что из под jenkins юзера нет прав на запуск файл. Т.е. нужно дать ему chmod 777, чтобы все могли запускать этот файл.


(Леонид Свидерский) #20

Помогло прописать вот такой путь в шаге сборки /usr/local/bin/py.test Буду копать дальше уже по ошибкам самих тестов smile