2016-08-13 6 views
0

Я использую python для 40 тестов, которые я запускаю. Теперь я пытаюсь сделать более или менее достойный просмотр HTML-отчета для себя и своего клиента.python behave генерирует XML, который является «не корректным»

Выполняю тесты через командную строку: behave --junit. Далее я беру xml, разбираю его (elementtree) и пишу html-файл.

Мне удалось сделать это, в основном, за исключением того, что мне нужно вручную отредактировать xml, потому что в нем есть какие-то странные символы. Мне кажется, что эти символы действительно не должны быть там, а также пытаться просто игнорировать их (используя recover = true, как упоминалось, например, ParseError: not well-formed (invalid token) using cElementTree) не работает. (Без этого он дает мне сообщение о «неправильно сформированном (недействительном токене)», и с возможностью восстановления он просто игнорирует все после странных символов, что приводит к очень короткому протоколу теста)

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

Возможно, просто изучая, какими символами они являются, поэтому я пытаюсь написать код, чтобы просто заменить или удалить их, прежде чем разбор будет полезен.

Любая помощь приветствуется!

Cheerz,

Chai

Вот кусок XML с этими странными персонажами: Я вижу, что qouting его здесь уже делает это шоу по-разному, поэтому я добавил скриншот sublimetext, а также. enter image description here

<testcase classname="screenshots.Features.Aanvraagformulier.Aanvraagformulier" name="Test 02 Veld validatie checken voor enkel veld zakelijke aanvraag" status="failed" time="79.278"><error message="Message: Time out bij t wachten op element met css of element niet gevonden: #pa..." type="NoSuchElementException"> 
<![CDATA[ 
Failing step: Given Dat ik ingelogd ben als aanvrager ... failed in 79.278s 
Location: Features\Aanvraagformulier.feature:98 
Traceback (most recent call last): 
    File "c:\python27\lib\site-packagesehave\model.py", line 1456, in run 
    match.run(runner.context) 
    File "c:\python27\lib\site-packagesehave\model.py", line 1903, in run 
    self.func(context, *args, **kwargs) 
    File "D:\Chai_Testspul\PythonScripts\sigmaspul\Featureslgemeen\general_steps.py", line 57, in dat_ik_ingelogd_ben 
    login(context, email, password) 
    File "D:\Chai_Testspul\PythonScripts\sigmaspul\Featureslgemeen\page_commands.py", line 18, in login 
    wait_for_css(context.driver, '#passwordInput') 
    File "D:\Chai_Testspul\PythonScripts\sigmaspul\Featureslgemeen\page_commands.py", line 44, in wait_for_css 
    raise NoSuchElementException('Time out bij t wachten op element met css of element niet gevonden: ' + css) 
NoSuchElementException: Message: Time out bij t wachten op element met css of element niet gevonden: #passwordInput 

]]> 
</error> 

ответ

1

Это похоже на ошибку. Посмотрите, как BS в вашем выводе, где вы ожидаете, \b и где BEL - вот где вы ожидали \a. Проблема заключается в том, что комбинации обратной косой черты + буквы интерпретируются как управляющие последовательности, когда это возможно.

Вот интерактивная сессия Python, который показывает, что происходит:

>>> print "a\bc\qd" 
c\qd 

\b интерпретируется как забой и, таким образом, c перезаписывает a. (У вас есть терминал, который вместо этого выдает BS.) \q проходит как есть, потому что \q не образует содержательной последовательности управления.

Теперь увидеть это:

>>> print r"a\bc\qd" 
a\bc\qd 

Если вы используете r"", то все проходит.

Вы можете обойти это, заменив все эти контрольные символы тем, чем они должны быть. Тогда XML будет в порядке.

В конечном счете, ошибка должна быть исправлена ​​в ее источнике. Возможно, библиотека, в которой работает Behave, - это глючит, или что-то, что вы используете для обработки вывода Behave, или для себя.

+0

Благодарим вас за ответ. С этим я смог обойти эту проблему.Я согласен с тем, что было бы неплохо, если бы это было исправлено где-то вместо меня, работая вокруг него, но для меня это приемлемо сейчас. Так что еще раз спасибо! – Chai