当前位置: 首页 > 知识库问答 >
问题:

生成诱惑力结果时的SAX解析器异常

赫连正初
2023-03-14

我使用Allure框架来生成测试报告。在测试框架中用作maven依赖项。

在jenkins中运行测试时,allure按预期创建了报告,但是Allure生成的xml文件在控制台中很少有例外。Allure从测试信息中创建xml文件,但是它从html/JSON格式的rest API响应中生成xml文件,由于它不是有效的xml文件,Sax解析器异常被抛出。

我无法理解如何解决这些异常。

下面是异常[Fatal Error]da669b14-4d30-4260-8815-eab1f720661b-附件的片段。xml:1:1:序言中不允许有内容。无法分析文件/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报告/allure-results/da669b14-4d30-4260-8815-eab1f720661b-附件。xml;行号:1;columnNumber:1;序言中不允许有内容。位于com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257),位于com.sumn.org.apache.exerces.internal.jaxp.DocumentBuilderImpl.parse,位于javax.xml.parserr.DocumentBuilder.parse),位于io.qameta.allure.junitxml.JunitXmlPlugin.parseRootElement(JunitXmlPlugin.java:97),位于io。$readResults$0(JunitXmlPlugin.java:87)位于java.util.ArrayList.forEach(ArrayList.java:1249)的io.qameta.allure.junitxml.JunitXmlPlugin.readResults(JuniTXmlPlukin.java:87)位于io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:32),位于io.qameta.aallure.ReportGenerater.readResults(ReportGenerator.java=32)的java:1249)java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193),位于java.util.stream.referencePipe$2$1.accept(referencepipipeline.gava:175),位于java位于io.qameta.allure.Commands.generate的java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)处的java.til.stream.ReduceOps$ReduceOps.evaluateSequential(ReduceOps.java:708)(Commands.java:89),位于io.qameta.allure.CommandLine.run(CommandLine.java:129),位于java.util.Optional.orElseGet(Optional.java:267),位于io

来自API的响应将永远是HTML/JSON,而不是xml响应。有人能指导我解决这些异常吗?

共有1个答案

卫飞
2023-03-14

答案实际上取决于您如何使用Allure来保存附件。一般来说,保存附件时可以指定MIME类型和文件扩展名

@Attachment(value = "API response", type = "application/json", fileExtension = ".json")
public String requestAPI() {
    ...
    return response;
}
 类似资料:
  • 我有一个使用TestNG和Allure报告的设置,当我从IntelliJ运行测试时,它工作得很好。我看了一下运行配置,它所做的只是在执行测试之前进行一个构建。然后,该过程在allure-results文件夹中创建诱惑结果。 我看过这个问题(在Maven build上不会生成诱惑力结果),但这并没有解决我的问题。 我的pom文件少了什么吗?

  • 我正在运行来生成诱惑报告,但当没有测试运行时,构建失败(因为还没有与给定测试组匹配的测试): [ERROR]无法执行目标org.apache.Maven.plugins:maven-site-plugin:3.3:项目登录时的site(default-site)-tests:页面生成过程中出错:呈现Maven报告时出错:无法生成报告:InvocationTargetException:无法找到任何

  • 我目前正在使用cucumber json report进行来自jenkins的报告。该报告将测试的每个屏幕截图保存在内存中,这通常会导致java堆内存错误。我想尝试一下“诱惑”,但是在创建报告时没有找到任何关于它的行为的信息。所以我有几个问题:1。诱惑报告是在测试执行过程中创建的,还是在执行完成后才将所有结果汇总并写入报告?2.报表在其他地方存储时,是否将截图嵌入到报表中或作为链接添加?3.截图是

  • 上面的代码用于生成allure报告并运行测试,它运行并生成reports-allure-results中的一个文件夹,其中包含JSON文件。见下方截图

  • 我正试着把诱惑力报告整合到一个Gradle构建中。似乎没有对Gradle的直接支持(全部是Maven),只有对TestNG的一些最近的支持。进一步挖掘,我发现Gradle不支持JUnit侦听器的一些问题,但是他们支持TestNG侦听器(因为TestNG支持)。我尝试了一个gradle集成,遵循Maven pom作为JUnit插件的指导原则,但它显然不会产生任何输出。所以我想我的问题是:是否会有任何