如何在TestNG,Selenium Test Script中获取方法的内部方法名称?

时间:2017-09-04 14:29:34

标签: java selenium testng

@AfterMethod中获取课程名称(TC_UI_PRM_N_001)
我只是使用this.getClassName().toString();
获取方法名称(permitsPageSaveWithEmptyMandatoryFields
我只使用result.getMethod().getMethodName().toString();

   @AfterMethod(alwaysRun = true)
    public void catchExceptions(ITestResult result) {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
        String className = this.getClassName().toString();
        String methodName = result.getMethod().getMethodName().toString();
...
}

如果步骤(内部方法)searchTextInPage(getTestCaseData(1))失败,我怎样才能在@AfterMethod中获取其名称?

public class TC_UI_PRM_N_001 extends BaseTestCase {
    Login login;
    HomePage homePage;
    Permits permits;

    @Test
    public void permitsPageSaveWithEmptyMandatoryFields(){
        login = new Login(getDriver());
        login.verifyCorrectLogin();

        homePage = new HomePage(getDriver());
        homePage.clickMenuItem("Permits");

        permits = new Permits(getDriver());
        permits.addNewCertificate()
                .validate()
                .searchTextInPage(getTestCaseData(1));
    }
}

1 个答案:

答案 0 :(得分:1)

您的程序使用以下行正确返回方法名称: (String methodName = result.getMethod().getMethodName().toString();). 您需要检索引发异常的方法中的特定行。一种简单的方法是通过Stacktrace找到它。

为了从Throwable中轻松地将堆栈跟踪检索为字符串,您可以使用类似的东西 String stackTrace = ExceptionUtils.getStackTrace(result.getThrowable()); 来自Apache Commons。 然后,您将能够在程序中找到引发异常的特定点。