如果使用DataProvider,如何在TestNG可通过电子邮件报告中提供自定义方法名称

时间:2018-06-14 15:59:13

标签: java automated-tests testng testng-dataprovider

我正在使用Data Provider,并且报告在TestNG报告的所有测试中显示相同的方法名称。

static String TC_Name;
@DataProvider(name="SampleTestData")
public Object[][] testData() {
    return new Object[][]{
        {"TestCase1","Description1",""},
        {"TestCase2","Description2",""},
        {"TestCase3","Description3",""},
        //{"TestCaseID_2","TC_Description","Negative",""},
    };
}


@Test(dataProvider="SampleTestData", alwaysRun = true,testName="SampleTest")
public void testCaseInitialization(String testcaseID,String testcaseName, String Temp) {
    Log.startTestCase(testcaseID + "_" + testcaseName);
    TC_Name= testcaseID;
}

现在我想要的输出是" TestCase(1-3)"。但我得到" testCaseInitialization"在报告中。

我尝试过以下黑客攻击方式。:

@AfterMethod(alwaysRun = true)
public void setResultTestName(ITestResult result) {
    try {
        BaseTestMethod baseTestMethod = (BaseTestMethod) result.getMethod();
        Field f = baseTestMethod.getClass().getSuperclass().getDeclaredField("m_methodName");
        f.setAccessible(true);
        f.set(baseTestMethod, TC_Name);
    } catch (Exception e) {
       // ErrorMessageHelper.getInstance().setErrorMessage(e);
        Reporter.log("Exception : " + e.getMessage());
    }
}

但这给了我" TestCase3"在所有方法名称中。

可以请任何人建议,我怎么能破解报告。

1 个答案:

答案 0 :(得分:0)

如果要检索" TestCase(1-3)"您可以仅使用@Test注释方法自定义方法名称。然后将其应用于测试方法。报告调用@Test方法的方法名称。