С Python (3.6) Behave, используя отчеты JUnit, как можно предотвратить появление определений шагов в отчетах? - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю с Behave в Python 3.6 - это здорово, очень нравится, но я должен использовать отчеты Junit.Переключатель --junit работает нормально, но вывод действительно тяжелый, потому что он включает в себя все определения функции gherkin.Я бы предпочел просто исключить все поле CDATA или, по крайней мере, перестать вести себя из-за определения характеристик.

В основном - как вы мешаете Behave копировать файл объектов в отчеты Junit?:

   <system-out>
   <![ CDATA[
   @scenario.begin

   Scenario: User fills zipcode on form
   Given user is on a visitor site page ... passed in 0.749s
   """
   /urlpath/
   """
   When a user enters a zip code in a form ... passed in 0.193s
    | action_method   | action_params   |
    | move_to_element | #lead-zip    |
    | send_keys       | 27610           |
    | move_to_element | #lead-submit |
    | click           |                 |
    Then a call is sent for a unique field value pair ... passed in 4.027s
    | unique_field | unique_value                      |
    | description  | Service Request Flow entry button |
   And the segment call contains parameters ... failed in 0.000s
    | prop_key               | prop_value                        |
    | activityLocation       | Visitor : Piffle                  |
    | categoryId             | 1002                              |
    | description            | Service Request Flow entry button |
    | marketId               | 100001                            |
    | userId                 |                                   |
    | userSelectedZipCode    | 27610                             |
    | visitorPageCategory    | Rofing                            |
    | visitorPageGeo         | RALEIGH/DURHAM                    |
    | visitorPageGeoCategory | RALEIGH/DURHAM - ROOFING          |

   @scenario.end
  --------------------------------------------------------------------------------
  ]]>

1 Ответ

0 голосов
/ 28 ноября 2018

Я нашел решение, которое работает для меня, хотя кажется, что вы все равно сможете подавить вывод по умолчанию (который в основном копирует файл функции в CDATA - что-то вроде бесполезного)

Если выЕсли вам нужен больший контроль над тем, что входит в раздел CDATA, вот решение: Скопируйте junit.py из env / lib / python3.6 / site-packages / поведения / reporter / junit.py в каталог, который вы будете поддерживать в качестве пользовательского репортера,Я помещаю свой в папку с именем reporters

(указанный выше путь предполагает, что у вас есть virtualenv под названием 'env', и вы используете python3.6 - настройка в зависимости от вашей среды)

В этом файле найдите метод, def CDATA(text=None): измените переменную text по своему желанию - примените фильтры или просто установите text = '', если вам это не нужно.

Затем в вашем environment.py добавьте это в область импорта: from reporters.junit import JUnitReporter

Наконец, в методе before_all(context) добавьте это:

junit_reporter = JUnitReporter(context.config)
context.config.reporters.append(junit_reporter)

Теперь у вас есть собственный генератор отчетов JUnit xml!

...