2017-09-04 61 views
0

@AfterMethod获得类名(TC_UI_PRM_N_001)
我只是用this.getClassName().toString();
获得方法名(permitsPageSaveWithEmptyMandatoryFields
我只是用result.getMethod().getMethodName().toString();如何在TestNG,Selenium Test Script中获取方法的内部方法名?

@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)); 
    } 
} 
+0

searchTextInPage如何失败?抛出异常?您应该能够从ITestResult获取异常和堆栈跟踪。 stacktrace应该包含'searchTextInPage' – juherr

回答

1

你的程序正确返回方法名与以下行: (String methodName = result.getMethod().getMethodName().toString();). 你需要获取引起异常那个方法里面具体的线路。一个简单的方法是通过Stacktrace找到它。

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

相关问题