2015-04-13 6 views
1

Я тестирую селен через pytest. Следующий шаг - начать делать некоторые отчеты. Я хотел бы написать что-то, что позволяет мне запускать тесты, собирать результаты и отправлять по электронной почте. Пока что самое близкое, что я нашел, это записать результат теста в журнал результатов, а затем использовать плагин для проверки состояния существующего состояния и отправки электронной почты оттуда. Это работает, но немного громоздко, и я надеюсь, что есть более элегантный способ сделать это. Хотя общая документация на pytest замечательна, документация плагина довольно бедна - я даже не могу найти pytest_sessionfinish в любом месте, хотя она работает.Сбор и отчетность pytest Результаты

import pytest 

class MyPlugin: 
    def pytest_sessionfinish(self, exitstatus): 
     if exitstatus == 0: 
      #Send success email 
      pass 
     else: 
      #Read output.txt 
      #Add output.txt to email body 
      #Send email 
      pass 

pytest.main("--resultlog=output.txt", plugins=[MyPlugin()]) 

Q: Что это лучший способ для запуска и сбора результатов pytest?


ответ

3

Один простой способ создания отчета о результатах использует параметр pytest --junitxml при выполнении тестов. pytest будет генерировать тестовый отчет в формате JUnit.

Поскольку JUnit широко используется, легко найти инструменты для синтаксического анализа отчета и создания хорошего вывода, например, отчетов HTML. Насколько я знаю, на Jenkins есть плагины, которые отлично подходят для разбора отчетов JUnit и предоставления хороших отчетов.

Посетите https://pytest.org/latest/usage.html и перейдите к разделу «Создание файлов формата JUnitXML».

Более того, pytest предоставляет возможность расширить отчет JUnit XML, когда у вас есть доступ к запросу pytest объекта или конфигурации:

if hasattr(request.config, "_xml"): 
    request.config._xml.add_custom_property(name, value) 

Если в тестовых случаях pytest обеспечивает приспособление, чтобы сделать это:

def test_function(record_xml_property): 
    record_xml_property("key", "value") 
    assert 0 

Это добавит настраиваемое свойство в отчет JUnit XML.

+0

Как вы получили доступ к объекту 'запрос'? Вы сделали это в 'pytest_runtest_logreport'? – malhar

Смежные вопросы