在通过jenkins(linux机器)运行我的API测试时,它生成Junit报告xml,在属性标记中包含一些无效字符。
<property name="LESS_TERMCAP_us" value="[04;38;5;111m"/>
由于jenkins因无效的xml而抛出错误。
如何从生成的xml中删除属性。
提前致谢。
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="Sanity" tests="3" failures="3" errors="0" time="5.354">
<properties><property name="JOB_NAME" value="QA-API-Automation-Sanity"/>
<property name="java.vendor" value="Oracle Corporation"/><property name="PWD" value="/var/lib/jenkins"/><property name="sun.java.launcher" value="SUN_STANDARD"/><property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/><property name="PATH" value="/var/lib/jenkins/tools/chromedriver:/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/usr/lib/apache-maven-3.3.9/bin/"/><property name="JENKINS_HOME" value="/var/lib/jenkins"/><property name="AWS_SDK_LOAD_CONFIG" value="true"/><property name="HUDSON_SERVER_COOKIE" value="2567307d622fab24"/><property name="POM_ARTIFACTID" value="apitest"/><property name="os.name" value="Linux"/><property name="EXECUTOR_NUMBER" value="3"/><property name="sun.boot.class.path" value="/usr/java/jdk1.8.0_60/jre/lib/resources.jar:/usr/java/jdk1.8.0_60/jre/lib/rt.jar:/usr/java/jdk1.8.0_60/jre/lib/sunrsasign.jar:/usr/java/jdk1.8.0_60/jre/lib/jsse.jar:/usr/java/jdk1.8.0_60/jre/lib/jce.jar:/usr/java/jdk1.8.0_60/jre/lib/charsets.jar:/usr/java/jdk1.8.0_60/jre/lib/jfr.jar:/usr/java/jdk1.8.0_60/jre/classes"/><property name="POM_DISPLAYNAME" value="APITest"/><property name="java.vm.specification.vendor" value="Oracle Corporation"/><property name="ROOT_BUILD_CAUSE" value="MANUALTRIGGER"/><property name="NODE_LABELS" value="QA-Slave qa-slave"/><property name="java.runtime.version" value="1.8.0_60-b27"/><property name="user.name" value="jenkins"/><property name="SSH_CONNECTION" value="52.14.5.155 42186 10.0.0.142 22"/><property name="guice.disable.misplaced.annotation.check" value="true"/><property name="SSH_CLIENT" value="52.14.5.155 42186 22"/><property name="PYTHON_INSTALL_LAYOUT" value="amzn"/><property name="user.language" value="en"/><property name="RUN_CHANGES_DISPLAY_URL" value="https://jenkins.gl-poc.com/job/QA-API-Automation-Sanity/22/display/redirect?page=changes"/><property name="JOB_BASE_NAME" value="QA-API-Automation-Sanity"/><property name="BUILD_DISPLAY_NAME" value="#22"/><property name="sun.boot.library.path" value="/usr/java/jdk1.8.0_60/jre/lib/amd64"/><property name="AWS_AUTO_SCALING_HOME" value="/opt/aws/apitools/as"/><property name="java.version" value="1.8.0_60"/><property name="user.timezone" value="Etc/UTC"/><property name="sun.arch.data.model" value="64"/><property name="NODE_NAME" value="QA-Slave"/><property name="NLSPATH" value="/usr/dt/lib/nls/msg/%L/%N.cat"/><property name="java.endorsed.dirs" value="/usr/java/jdk1.8.0_60/jre/lib/endorsed"/><property name="BUILD_ID" value="22"/><property name="sun.cpu.isalist" value=""/><property name="sun.jnu.encoding" value="UTF-8"/><property name="file.encoding.pkg" value="sun.io"/><property name="SHELL" value="/bin/bash"/><property name="file.separator" value="/"/><property name="java.specification.name" value="Java Platform API Specification"/>
<property name="LESS_TERMCAP_us" value="[04;38;5;111m"/>
<property name="java.class.version" value="52.0"/><property name="org.slf4j.simpleLogger.defaultLogLevel" value="info"/><property name="user.country" value="US"/><property name="securerandom.source" value="file:/dev/./urandom"/><property name="java.home" value="/usr/java/jdk1.8.0_60/jre"/><property name="java.vm.info" value="mixed mode"/><property name="LESSOPEN" value="||/usr/bin/lesspipe.sh %s"/><property name="os.version" value="4.4.41-36.55.amzn1.x86_64"/><property name="EC2_AMITOOL_HOME" value="/opt/aws/amitools/ec2"/><property name="RUN_DISPLAY_URL" value="https://jenkins.gl-poc.com/job/QA-API-Automation-Sanity/22/display/redirect"/>
<property name="LESS_TERMCAP_ue" value="[0m"/><property name="POM_VERSION" value="1.0-SNAPSHOT"/><property name="sun.font.fontmanager" value="sun.awt.X11FontManager"/><property name="path.separator" value=":"/><property name="java.vm.version" value="25.60-b23"/><property name="GIT_PREVIOUS_COMMIT" value="c20674b0f57ce7beb1a881f19bdfeae2a5b602e7"/><property name="JOB_DISPLAY_URL" value="https://jenkins.gl-poc.com/job/QA-API-Automation-Sanity/display/redirect"/><property name="SHLVL" value="1"/><property name="_" value="/usr/bin/java"/><property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/><property name="JAVA_HOME" value="/usr/java/jdk1.8.0_60"/><property name="sun.io.unicode.encoding" value="UnicodeLittle"/><property name="awt.toolkit" value="sun.awt.X11.XToolkit"/><property name="LOGNAME" value="jenkins"/><property name="POM_PACKAGING" value="jar"/><property name="HOME" value="/home/jenkins"/><property name="POM_GROUPID" value="com.api"/><property name="user.home" value="/home/jenkins"/><property name="JENKINS_SERVER_COOKIE" value="2567307d622fab24"/><property name="BUILD_TAG" value="jenkins-QA-API-Automation-Sanity-22"/><property name="HUDSON_URL" value="https://jenkins.gl-poc.com/"/><property name="java.specification.vendor" value="Oracle Corporation"/><property name="CLASSPATH" value=""/><property name="java.library.path" value="/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib"/><property name="java.vendor.url" value="http://java.oracle.com/"/><property name="ROOT_BUILD_CAUSE_MANUALTRIGGER" value="true"/><property name="java.vm.vendor" value="Oracle Corporation"/><property name="maven.home" value="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9"/><property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/><property name="sun.java.command" value="jenkins.maven3.agent.Maven33Main /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9 /var/lib/jenkins/slave.jar /var/lib/jenkins/maven33-interceptor.jar /var/lib/jenkins/maven3-interceptor-commons.jar 44390"/><property name="java.class.path" value="/var/lib/jenkins/maven33-agent.jar:/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9/boot/plexus-classworlds-2.5.2.jar:/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9/conf/logging"/><property name="EC2_HOME" value="/opt/aws/apitools/ec2"/><property name="java.vm.specification.name" value="Java Virtual Machine Specification"/><property name="java.vm.specification.version" value="1.8"/><property name="MAIL" value="/var/mail/jenkins"/><property name="M2_HOME" value="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9"/>
<property name="LESS_TERMCAP_me" value="[0m"/><property name="sun.cpu.endian" value="little"/><property name="sun.os.patch.level" value="unknown"/>
<property name="LESS_TERMCAP_md" value="[01;38;5;208m"/>
<property name="LESS_TERMCAP_mb" value="[01;31m"/>
<property name="java.io.tmpdir" value="/tmp"/><property name="PATH+MAVEN" value="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9/bin"/><property name="HUDSON_HOME" value="/var/lib/jenkins"/>
<property name="LESS_TERMCAP_se" value="[0m"/><property name="OLDPWD" value="/home/jenkins"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="BUILD_URL" value="https://jenkins.gl-poc.com/job/QA-API-Automation-Sanity/22/"/>
<property name="os.arch" value="amd64"/><property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/><property name="java.ext.dirs" value="/usr/java/jdk1.8.0_60/jre/lib/ext:/usr/java/packages/lib/ext"/><property name="JOB_URL" value="https://jenkins.gl-poc.com/job/QA-API-Automation-Sanity/"/><property name="_JAVA_OPTIONS" value="-Xmx2048m"/><property name="user.dir" value="/var/lib/jenkins/workspace/QA-API-Automation-Sanity"/><property name="MAVEN_HOME" value="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9"/><property name="line.separator" value="
"/>
<property name="BUILD_NUMBER" value="22"/><property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/><property name="JENKINS_URL" value="https://jenkins.gl-poc.com/"/>
<property name="GIT_BRANCH" value="origin/develop"/><property name="PATH+CHROMEDRIVER" value="/var/lib/jenkins/tools/chromedriver"/><property name="BUILD_CAUSE_MANUALTRIGGER" value="true"/><property name="GIT_COMMIT" value="ad5e9221a4f489a8a60e60bed86061be514bccda"/><property name="LANG" value="en_US.UTF-8"/><property name="file.encoding" value="UTF-8"/><property name="maven3.interceptor" value="/var/lib/jenkins/maven33-interceptor.jar"/><property name="WORKSPACE" value="/var/lib/jenkins/workspace/QA-API-Automation-Sanity"/><property name="maven3.interceptor.common" value="/var/lib/jenkins/maven3-interceptor-commons.jar"/><property name="AWS_PATH" value="/opt/aws"/><property name="AWS_ELB_HOME" value="/opt/aws/apitools/elb"/><property name="AWS_CLOUDWATCH_HOME" value="/opt/aws/apitools/mon"/><property name="java.specification.version" value="1.8"/><property name="BUILD_CAUSE" value="MANUALTRIGGER"/><property name="USER" value="jenkins"/><property name="XFILESEARCHPATH" value="/usr/dt/app-defaults/%L/Dt"/><property name="GIT_URL" value="ssh://git@bitbucket.pearson.com/glpnfr/glp-api-automation-qa.git"/></properties>
<testcase name="Login" time="1.595">
<failure type="Failing due to failed test step" message="Failing due to failed test step">
<![CDATA[<h3><b>claimTokenIdTransfer Failed</b></h3><pre>Error performing transfer [claimTokenRetrieval] - Missing target property
</pre><hr/><h3><b>retrievalClaim Failed</b></h3><pre>[Valid HTTP Status Codes] Response status code:401 is not in acceptable list of status codes
</pre><hr/>]]>
</failure>
</testcase>
</testsuite>
答案 0 :(得分:0)
在这里,您可以在线评论:
将xml作为字符串传递给parseText
方法。
//Pass xml string
def pxml = new XmlSlurper().parseText(xml)
//Get the suites
def suites = pxml.'**'.findAll{ it.name() == 'testsuite' }
//Remove properties node
suites.each{ it.properties.replaceNode {} }
//This gives the new xml without properties element
def output = groovy.xml.XmlUtil.serialize(pxml)
//Below would unescape the xml
def map = ['<' : '<', '>' : '>', '"' : '"', ''':'\'', '&':'&']
map.collect {k,v -> output = output.replaceAll(k,v)}
println output
您可以在线快速尝试 Demo