如何以编程方式从testNG xml中删除特定标签

时间:2019-04-23 19:10:33

标签: java xml testng testng.xml

我正在尝试以编程方式运行从第一次运行生成的testng-failed.xml。生成的xml具有我在第一次运行中使用的方法选择器标记(beanshell脚本)。

相同的方法选择器也出现在testng-failed.xml中。所以当我运行testng-failed.xml时,它没有给出正确的输出。它按照bean shell配置执行,并且忽略类中的标记。

TestNG testNG = new TestNG();
List<String> failedXMLsList = new ArrayList<String>();
failedXMLsList.add(result_Dir + "/testng_results/run_" + prevRunCount + "/testng-failed.xml");
                    testNG.setTestSuites(failedXMLsList);
testNG.run();

失败的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" name="Failed suite [TestSuite]" parallel="methods">

  <test thread-count="1" name="TestSet(failed)" parallel="methods">
    <method-selectors>
      <method-selector>
        <script language="BeanShell">
          <![CDATA[String module=method.getAnnotation(org.comp.Runner1.TestDetails.class).module();String input="[case, customer]";return input.contains(module)]]>
        </script>
      </method-selector>
    </method-selectors>
    <classes>
      <class name="org.comp.tests.Case.Test2">
        <methods>
          <include name="Method2"/>
        </methods>
      </class> 
    </classes>
  </test> 
</suite> 

通过上述配置-它执行类(org.comp.tests.Case.Test2)中具有模块案例和客户的所有测试。

但是我不希望所有方法都被执行,因为除Method2之外,其他方法在第一次运行中已经通过。

我如何仅运行Method2?

如果我们从xml中删除标记,则将执行Method2。因此我需要以某种方式告诉testNG忽略

不确定如何从硬盘中存在的物理testng-failed.xml中以编程方式实现这一目标。

0 个答案:

没有答案