t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

reporting
allure
python
testng
webdriver
selenium
Теги: #<Tag:0x00007f9c599a75e8> #<Tag:0x00007f9c599a74a8> #<Tag:0x00007f9c599a7368> #<Tag:0x00007f9c599a7228> #<Tag:0x00007f9c599a70e8> #<Tag:0x00007f9c599a6fa8>

(Philipp Lebedev) #1

Здравствуйте!
Занимаюсь автоматизорованный тестированием веб приложений, используя Python unittest framework и selenium WebDriver. И столкнулся с проблемой вывода отчета о проделанном тестировании.

Я работаю в PyCharm благо в неи есть возсожность экспортировать HTML отчет:
https://www.jetbrains.com/help/pycharm/export-test-results.html

Моя проблема заключается в том что PyCharm выводит в отчет названия модулей, классов и тестов как они написаны в коде (test_1…, LoginPageTest, и тд).(см. скриншот)

А мне надо выводить для клиента название этих классов и тестов в человеческом читабельном виде:

Login page tests:
|----------------Verify whether application allows log in using correct credentials
|----------------Verify whether application allows log in using incorrect credentials
|----------------etc

То есть мне в отчет надо вывести класс LoginPageTest как “Login page tests” и почеловечески назвать сами тесты.
Существует ли способ переименовывать тесты в отчете?
Или может есть какие-нибудь другие инструменты для вывода отчета в HTML формате?

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

PS: я в этом деле новечок, первый проект… Но как понимаю HTMLTestRunner также выводить в отчет названия вщятые из кода.


(Вадим) #2

Для красивых отчетов однозначно Allure.


(Philipp Lebedev) #3

С Allre как оказалось не все так просто. Застрял на этапе установки:

Делал все так как указано здесь: https://docs.qameta.io/allure/
Устанавливал на Windows 10

Может кто-нибудь знает как решить проблему? Allure ругается на JAVA_HOME, хотя все установлено правильно.
Или может есть другой способ установки Allure?

Поделитесь ,пожалуйста, туториалом или советом по установке и работе с Allure.

Спасибо


(Вадим) #4

На сколько я понял это старый туториал, сейчас актуальная вторая версия, посмотрите на проект в репозиторие - https://github.com/allure-framework/allure2. Ну и надо прописать путь в JAVA_HOME


(Philipp Lebedev) #5

Спасибо.
“;” все портила в пути


(Вадим) #6

Будут вопросы, пиши. Удачи!


(Philipp Lebedev) #7

Подскажите все ли правильно делаю.

  1. Установил Allure:

scoop install allure
allure --version
2.5.0

  1. Установил allure-adaptor:

pip install pytest-allure-adaptor

3.Добавил allure декораторы в код. Отрывок кода:
import unittest
import time
import sys
import allure
from Tenx.TestBase.EnvirimentSetUp import EnviromentSetup
from Tenx.src.PageObjects.Pages.LoginPage import LoginPage

class TestLoginPageTest(EnviromentSetup):
@allure.feature(‘Feature1’)
@allure.story(‘Story1’)
def test_1_Land_login_page(self):
ss_path = “/Login_Page/”
page = LoginPage(self.driver, self.wait, self.expected_conditions, self.select, self.Keys)
self.driver.get(page.url)
time.sleep(1)
try:
self.assertTrue(page.logo.is_displayed())
except:
print("ERROR: " + str(sys.exc_info()[1]))
self.ss.ScreenShot(ss_path + “test_1_Land_login_page-” + self.now + “.png”)
print(‘TEST TS-330 Failed: Not able to land to Login page’)
print("ScreenShot: " + ss_path + “test_1_Land_login_page-” + self.now + “.png”)
raise
else:
print(‘TEST TS-330 PASS’)

  1. Через терминал запустил код:

py.test test_1_LoginPage.py --alluredir [путь_для_хранения_данных_для_отчета]
============================= test session starts =============================
platform win32 – Python 3.6.3, pytest-3.3.2, py-1.5.2, pluggy-0.6.0
rootdir: C:\Users\lebed\PycharmProjects\Work\Tenx, inifile:
plugins: allure-adaptor-1.7.10
collected 4 items

test_1_LoginPage.py
DevTools listening on ws://127.0.0.1:12632/devtools/browser/a1701407-845e-48c2-83a6-4117b75e9c5d
… [100%]

========================== 4 passed in 50.83 seconds ==========================

Все тесты отработали хорошо (framework unittest)

  1. Через терминал сгенерировал allure отчет:

allure generate [путь_для_хранения_данных_для_отчета]
Report successfully generated to allure-report

Но сам отчет пустой, нет никакой информации в нем (404)

Подскажите, пожалуйста, что я делаю не так.


(Sergey Korol) #8

По всей видимости, открываете репорт из файловой системы в хроме?
Открывать нужно либо в другом браузере по типу FF, либо использовать команду:
allure serve path


(Philipp Lebedev) #9

Да все верно открывал в Chrome.
Спасибо, в FF отчет подгрузился.

Теперь столкнулся со следуюшей проблемой:
Я в коде использовал декораторы:

А в отчете по прежднему тянуться названия функций из кода:

Также обратил внимание, что PyCharm выделяет мне цветом декораторы (Cannot find reference…)

Подскажите, пожалуйста, в чем может быть проблема, почему декораторы не работают?
Может установить дополнительные пакеты?

Настройки:
Windows 10
Python 3.6.3
pytest 3.3.2
pytest-allure-adaptor 1.7.10

Заранее огромное спасибо!
.


(Philipp Lebedev) #10

Кому интересно ответ здесь: https://github.com/allure-framework/allure-pytest/issues/141


(Кирилл Савинов) #11

У вас работает?
Использую Python+pytest+allure. Кажется, перепробовал все варианты, и заданные названия тестовых наборов и тест-кейсов все равно не прикручиваются к отчету.


(Вадим) #12

С чем у вас конкретно проблема ?


(Кирилл Савинов) #13

Уже разобрались, спасибо. Помогла ссылка от оратора выше: https://github.com/allure-framework/allure-pytest/issues/141


(Sss Ysa) #14

Я использую unittest, nose. Красивое именование тестов и кейсов достигается (как оказалось после прочтения оф документации) написанием документации к каждому тесту и классу.

test_responseSchemaIsValid():
    ```Валидация_схемы_ответа
        Проверка обязательных ключей json. ...
    ```
    resp = requests.post(....)
    jsonResp = {}
    try:
        jsonResp = resp.json()
    ...
    eq_(True, True if "id" in jsonResp else False, "Отсутствует ключ ...")
   ...

В итоге, при прогонке тестов получаю:
Валидация_схемы_ответа … ок (0.001сек)


(Sergei) #15

Неужели это кириллица? Да не, показалось, Комикс Да не бред-какой-то (2 зоны)


(Sss Ysa) #16

Над гениальными решениями всегда вначале смеются :slight_smile:


(Дима Ананьев) #17

ПРивет

А может кто предоставить кусок кода, который будет генерить аллюр отчет вида:

Название группы тестов 1
Тест 1
Тест 2
Название группы тестов 2
Тест 1
Тест 2

примерно как писал автор выше - можете показать? я там дальше подкручу

спасибо

язык питон)


(Вадим) #18

Если я правильно понял вопрос, то вот:

@allure.story("Some story")
@allure.feature("Sample suite")
class Test_Simple:

    @allure.step("Test case 1")
    @allure.testcase("http://my.tms.org/TESTCASE-1")
    @allure.severity(allure.severity_level.BLOCKER)
    def test_simple(self):
        print('test 1 ')

    @allure.step("Test case 2")
    @allure.testcase("http://my.tms.org/TESTCASE-2")
    @allure.severity(allure.severity_level.CRITICAL)
    def test_simple_1(self):
        print('test 2 ')

(Дима Ананьев) #19

СПАСИБО БОЛЬШОЕ!


(Дима Ананьев) #20

py.test my_tests/ --allure_features=feature1,feature2
py.test my_tests/ --allure_features=feature1,feature2 --allure_stories=story1,story2

Классы с тестами помечены соответствующими маркерами.

Но для запуска тестов, чтобы в allure все разложилось по папкам надо писать так:
--alluredir=allureresult -m health_check --allure_features=ADM,ADGE,ADC

Но если таких классов у меня много и я не хочу постоянно идти в настройки и добавлять новые названия

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

спасибо