在套件中运行测试用例时在 XML testng 文件中出现错误

Posted

技术标签:

【中文标题】在套件中运行测试用例时在 XML testng 文件中出现错误【英文标题】:Getting Error in XML testng file while running the test case in a suite 【发布时间】:2020-06-10 07:54:51 【问题描述】:

我正在尝试在套件中运行 testng xml 文件。但是当我运行文件时 作为 testng 套件运行时,我在控制台中遇到错误

org.testng.TestNGException: org.xml.sax.SAXParseException; lineNumber: 37; columnNumber: 9; The content of element type "suite" must match "(groups?,(listeners|packages|test|parameter|method-selectors|suite-files)*)".
at org.testng.TestNG.parseSuite(TestNG.java:327)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:348)
at org.testng.TestNG.initializeEverything(TestNG.java:995)
at org.testng.remote.support.RemoteTestNG6_12.initialize(RemoteTestNG6_12.java:22)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:97)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

原因:org.xml.sax.SAXParseException;行号:37;列号:9;元素类型“suite”的内容必须匹配“(groups?,(listeners|packages|test|parameter|method-selectors|suite-files)*)”。 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284) 在 com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1994) 在 com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1783) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2970) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:118) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327) 在 javax.xml.parsers.SAXParser.parse(SAXParser.java:195) 在 org.testng.xml.XMLParser.parse(XMLParser.java:38) 在 org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:16) 在 org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:9) 在 org.testng.xml.Parser.parse(Parser.java:152) 在 org.testng.xml.Parser.parse(Parser.java:233) 在 org.testng.TestNG.parseSuite(TestNG.java:295) ... 6 更多

由于我是自动化测试的新手,所以我无法找出问题出现的原因。我检查了所有语法错误,我觉得它 是正确的。但我无法解决这个问题。这是我试图运行但出现错误的 xml 文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="Merck Production Smoke Test Automation Test Suite">
    <parameter name="appURL" value="https://webqws.sial.com"/>
    <parameter name="browserType" value="chrome"/>   
    <listeners>
    <listener class-name="customListener.TestNGCustomReportListener"> 
    </listener>
    <listener class-name="customListener.Customreporter"/>
    </listeners>
    <!--  --> <test name="Merck Production Suite - Automation Scripts 
    Execution - US">
    <parameter name="countryName" value="United States"/>      
    <classes>
    <class name="testScript.Merck_Web_eCommerce_SmokeTest"/>   
    </classes>    
    </test> -->    
    <test name="Merck Production Suite - Automation Scripts Execution - UK">    
    <parameter name="countryName" value="United Kingdom"/>    
    <classes>    
    <class name="testScript.Merck_Web_eCommerce_SmokeTest"/>    
    </classes>     
    </test>    
    <!-- <test name="Merck Production Suite - Automation Scripts Execution - 
   INDIA">
   <parameter name="countryName" value="India"/>   
   <classes>
   <class name="testScript.Merck_Web_eCommerce_SmokeTest"/>
   </classes>   
   </test>  -->    
   </suite>

【问题讨论】:

将您的 xml 文件添加到问题中 欢迎来到Stack Overflow!您可以验证您的测试 xml 文件(在 Eclipse 中,...)吗? (当你从字面上粘贴时),我对无与伦比的关闭--&gt;(在第一次关闭&lt;/test&gt;之后)感到怀疑 好的..让我检查一下 感谢您的回复。我已经在 Eclipse 中验证了 XML 文件,但出现了类似“文档类型声明包含或指向的标记声明必须格式正确”之类的错误我在哪一行收到此错误 【参考方案1】:

(最可能的)问题原因:

    在您的 xml 文件中无法匹配关闭 --&gt;

    解决方法:删除它。

    (修复 1. 后,我仍然有:)“无效 DTD”(!),如 here。

    解决方案:使用 https!;) (in &lt;!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" &gt;)

【讨论】:

我得到以下错误“org.testng.TestNGException: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效认证路径 我遇到了一个类似的异常(org.xml.sax.SAXParseException),在我的例子中,“dtb”网址与“http”而不是“https”一起使用。只是改变它就可以了。

以上是关于在套件中运行测试用例时在 XML testng 文件中出现错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TestNG 中并行运行测试用例?

“根据条件在 testNG 中执行测试”

TestNG 在运行 pom.xml 中提到的所有测试套件之前运行一次

Maven 故障安全插件不运行 testNG XML 套件

在 aws-device 场中运行特定的 TestNG testng.xml 套件文件

Gradle 并行运行 TestNG 套件