<?xml version = "1.0" encoding = "UTF-8"?>
<testng-results skipped = "0" failed = "0" ignored = "0" total = "1" passed = "1">
<reporter-output>
</reporter-output>
<suite name = "Gradle suite">
<groups>
<group name = "smoke-ui-forms">
<method name = "fp17CompleteForm" class = "ui.forms.fp17CompleteFormXX1011"/>
</group> <!-- smoke-ui-forms -->
</groups>
<test name = "Gradle test">
<class name = "ui.forms.fp17CompleteFormXX1011">
<test-method status = "PASS" name = "beforeClassSpec" ">
<reporter-output>
</reporter-output>
</test-method> <!-- beforeClassSpec -->
<test-method status = "PASS" name = "fp17CompleteForm">
<reporter-output>
</reporter-output>
<attributes>
<attribute name = "test">
<![CDATA[XX-1011]]>
</attribute> <!-- test -->
</attributes>
</test-method> <!-- fp17CompleteForm -->
<test-method status = "PASS" name = "cleanupSpec">
<reporter-output>
</reporter-output>
</test-method> <!-- cleanupSpec -->
</class> <!-- ui.forms.fp17CompleteFormXX1011 -->
</test> <!-- Gradle test -->
</suite> <!-- Gradle suite -->
</testng-results>
Учитывая приведенный выше XML, я пытаюсь загрузить файл, изменить его, чтобы удалить все тестовые методы, имя которых равно beforeClassSpec.
Отличный сценарий
def xmlFile = new File("../../../build/reports/tests/test/testng-results.xml")
def xml = new XmlParser().parse(xmlFile)
def nodes = xml.suite.test.class.'test-method'
nodes
.findAll { it.'@name' == 'beforeClassSpec' }
.each { nodes.remove(it) }
Этому коду удается удалить beforeClassSpec из моего nodes
def, но они остаются в xml
def.
Я также пробовал это
def xmlFile = new File("../../../build/reports/tests/test/testng-results.xml")
def xml = new XmlParser().parse(xmlFile)
xml.suite.test.class.'test-method'
.findAll { it.'@name' == 'beforeClassSpec' }
.each { xml.remove(it) }
Я также пытался использовать xmlSlurper, и он не может правильно прочитать файл и возвращает только узел CDATA
.
использовать .each { it.parent().remove(it) }
def nodes = xml.suite.test.class.'test-method'
nodes
.findAll { it.'@name' == 'beforeClassSpec' }
.each { it.parent().remove(it) }
println groovy.xml.XmlUtil.serialize(xml)
согласно groovy doc - он общедоступен: docs.groovy-lang.org/2.4.3/html/api/groovy/util/…
да, я думаю, что что-то неправильно сконфигурировано с моим интеллектом, что является еще одной проблемой, с которой мне придется разобраться в какой-то момент.
Intellij показывает
parent()
как отсутствие объявления, но скрипт запускается и работает как нужно.