Как использовать имена тестовых тестов внутри функции для условия if - PullRequest
0 голосов
/ 15 ноября 2018

Предположим, у меня есть три доступных xml-файла testng. Как я могу использовать его имена или переменные в нем для проверки внутри функции. я должен использовать условие if внутри функции для запуска определенных строк, если был запущен определенный XML-файл testng

1 Ответ

0 голосов
/ 18 ноября 2018

В следующем примере показано, как получить доступ к имени <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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...