Код Middle Отчётность и Allure обновлено
Сводка по JUnit XML
Условие
Напишите junit_summary(xml): разобрать строку JUnit XML и вернуть словарь {"tests", "passed", "failed", "errors", "skipped", "time"}. Считать по элементам testcase в любом месте документа (корень может быть testsuites или testsuite): есть дочерний failure, это failed; error, это errors; skipped, это skipped; иначе passed. time это сумма атрибутов time у testcase (если атрибута нет, 0), округлённая до 3 знаков. Атрибуты-счётчики у testsuite не использовать: они бывают неверны.
Примеры
junit_summary("<testsuite tests=\"3\"><testcase name=\"a\" time=\"0.5\"/><testcase name=\"b\" time=\"1.25\"><failure message=\"x\"/></testcase><testcase name=\"c\" time=\"0\"><skipped/></testcase></testsuite>") // {"tests":3,"passed":1,"failed":1,"errors":0,"skipped":1,"time":1.75}
junit_summary("<testsuites><testsuite><testcase name=\"a\" time=\"1\"/></testsuite><testsuite><testcase name=\"b\" time=\"2\"><error message=\"boom\"/></testcase></testsuite></testsuites>") // {"tests":2,"passed":1,"failed":0,"errors":1,"skipped":0,"time":3}
junit_summary("<testsuite tests=\"0\"/>") // {"tests":0,"passed":0,"failed":0,"errors":0,"skipped":0,"time":0}
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.