我使用Allure框架生成测试报告。 在测试框架中用作maven依赖。
在jenkins中运行测试时,Allure按预期创建了报告,但是在控制台中几乎没有异常生成的xml文件的例外。 Allure正在从测试信息创建xml文件,但是它从html / JSON格式的rest API响应生成xml文件,并且由于它不是有效的xml文件,因此抛出了Sax Parser异常。
我无法理解如何解决这些例外。
以下是例外情况 [致命错误] da669b14-4d30-4260-8815-eab1f720661b-attachment.xml:1:1:prolog中不允许使用内容。 无法解析文件/home/jenkins/workspace/xxx_trunk-H4U6TKVVIR44VYBZR7Q53HWUDRP5C3JJEEVZOEYQTCQK53LROIJA/.ci-reports/allure-results/da669b14-4d30-4260-8815-eab1f720661b-attachment.xml:{} org.xml.sax.SAXParseException; systemId:file:/home/jenkins/workspace/amp-adengine_trunk-H4U6TKVVIR44VYBZR7Q53HWUDRP5C3JJEEVZOEYQTCQK53LROIJA/.ci-reports/allure-results/da669b14-4d30-4260-8815-eab1f720661b-attachment.xml; lineNumber:1; columnNumber:1;序言中不能有内容。 在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) 在javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205) at io.qameta.allure.junitxml.JunitXmlPlugin.parseRootElement(JunitXmlPlugin.java:97) at io.qameta.allure.junitxml.JunitXmlPlugin.lambda $ readResults $ 0(JunitXmlPlugin.java:87) at java.util.ArrayList.forEach(ArrayList.java:1249) at io.qameta.allure.junitxml.JunitXmlPlugin.readResults(JunitXmlPlugin.java:87) at io.qameta.allure.ReportGenerator.lambda $ readResults $ 0(ReportGenerator.java:32) at java.util.ArrayList.forEach(ArrayList.java:1249) at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:32) at java.util.stream.ReferencePipeline $ 3 $ 1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline $ 2 $ 1.accept(ReferencePipeline.java:175) at java.util.ArrayList $ ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 在java.util.stream.ReduceOps $ ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:54) at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:43) 在io.qameta.allure.Commands.generate(Commands.java:89) 在io.qameta.allure.CommandLine.run(CommandLine.java:129) 在java.util.Optional.orElseGet(Optional.java:267) at io.qameta.allure.CommandLine.main(CommandLine.java:72)
来自API的响应将始终为HTML / JSON,并且不会是xml响应。 有人可以指导我解决这些异常吗?
答案 0 :(得分:0)
答案实际上取决于您如何使用Allure保存附件。通常,可以在保存附件时指定MIME类型和文件扩展名
@Attachment(value = "API response", type = "application/json", fileExtension = ".json")
public String requestAPI() {
...
return response;
}