Как получить Testng - имя метода теста, если в тестовом примере есть поставщик данных с несколькими значениями - PullRequest
0 голосов
/ 29 мая 2018
@DataProvider(name = "Payment")
public static Object[][] Payment() {
        return new Object[][] {
                { "TC_001", "Payment 1" }, 
                { "TC_002", "Payment 2" }
        };
    }

@Test(enabled = true, dataProvider = "Payment")
public void Payment(String testCaseNumber, String testDesc) throws Exception { 
}

@AfterMethod
public void tearDown(ITestResult result) {
    testMethodName = result.getMethod().getMethodName();
}

Здесь testMethodName возвращает только Платеж

testMethodName также должен возвращать имя поставщика Платеж с данными.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 30 мая 2018

Вот пример, который показывает, как извлечь эти значения.

import java.lang.reflect.Method;
import java.util.Arrays;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestClassSample {

  @Test(dataProvider = "dp")
  public void testMethod(int i) {}

  @DataProvider(name = "dp")
  public Object[][] getData() {
    return new Object[][] {{1}, {2}};
  }

  @AfterMethod
  public void afterMethod(ITestResult result) {
    Object[] parameters = result.getParameters();
    Method method = result.getMethod().getConstructorOrMethod().getMethod();
    String msg = "";
    Test test = method.getAnnotation(Test.class);
    if (test == null) {
      return;
    }
    msg += "The @Test method [" + method.getName() + "] ";
    String dataProviderName = test.dataProvider();
    Class clazz = test.dataProviderClass();
    if (!dataProviderName.trim().isEmpty()) {
      msg += " had its data provider name as [" + dataProviderName + "] ";
      if (clazz != Object.class) {
        msg += " and class as [" + clazz.getCanonicalName() + "] ";
      }
    }
    if (parameters != null) {
      msg += " and had parameters as " + Arrays.toString(parameters);
    }
    System.err.println(msg);
  }
}

Вот вывод

The @Test method [testMethod]  had its data provider name as [dp]  and had parameters as [1]
The @Test method [testMethod]  had its data provider name as [dp]  and had parameters as [2]

===============================================
Default Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...