如何在if条件下的函数中使用Testng测试名称

时间:2018-11-15 10:37:41

标签: eclipse function selenium testng

考虑到我有三个可用的testng xml文件。如何使用它的名称或其中的变量在函数内部进行验证。如果已经运行了特定的testng xml文件,我必须在函数内部使用if条件来运行某些行

1 个答案:

答案 0 :(得分:0)

以下示例显示了如何访问<suite>名称甚至当前的<test>名称,以及在<suite>级别或<test>上定义的参数级别。

import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.annotations.Test;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

public class SampleTestClass {

  @Test
  public void sampleTestMethod() {
    ITestResult result = Reporter.getCurrentTestResult();
    XmlTest xmltest = result.getTestContext().getCurrentXmlTest();
    XmlSuite xmlsuite = xmltest.getSuite();
    System.err.println("The <test> name is : " + xmltest.getName());
    System.err.println("The <suite> name is :" + xmlsuite.getName());
    System.err.println("Parameters defined at <test> level");
    xmltest
        .getLocalParameters()
        .forEach(
            (key, value) -> System.err.println(String.format("[Key: %s, Value: %s]", key, value)));
    System.err.println("Parameters defined at <suite> level");
    xmlsuite
        .getParameters()
        .forEach(
            (key, value) -> System.err.println(String.format("[Key: %s, Value: %s]", key, value)));
  }
}

下面是套件xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Question_53317518_suite" parallel="false" verbose="2">
  <parameter name="suite_param_one" value="a"/>
  <parameter name="suite_param_two" value="b"/>
  <parameter name="suite_param_three" value="c"/>

  <test name="Question_53317518_test">
    <parameter name="test_param_one" value="1"/>
    <parameter name="test_param_two" value="2"/>
    <parameter name="test_param_three" value="3"/>
    <classes>
      <class name="com.rationaleemotions.stackoverflow.qn53317518.SampleTestClass"/>
    </classes>
  </test>
</suite>

这是执行输出

...
... TestNG 7.0.0-beta1 by Cédric Beust (cedric@beust.com)
...
The <test> name is : Question_53317518_test
The <suite> name is :Question_53317518_suite
Parameters defined at <test> level
[Key: test_param_two, Value: 2]
[Key: test_param_three, Value: 3]
[Key: test_param_one, Value: 1]
Parameters defined at <suite> level
[Key: suite_param_two, Value: b]
[Key: suite_param_one, Value: a]
[Key: suite_param_three, Value: c]
PASSED: sampleTestMethod

===============================================
    Question_53317518_test
    Tests run: 1, Failures: 0, Skips: 0
===============================================

===============================================
Question_53317518_suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================


Process finished with exit code 0