2017-01-24 7 views
0

Возможно ли сохранить все тестовые примеры, которые потерпели неудачу в hashmap, а затем вызвать все значения, сохраненные на карте в конце класса?Хранить «данные» в HashMap после каждого тестового исполнения (TestNG Class)?

Variable:

private HashMap<String, Integer> serverStatusMap = new HashMap<String, Integer>(); 

После Method Код:

@AfterMethod 
public void trackServerStatus(ITestResult testResult) { 
    if (testResult.getStatus() == ITestResult.FAILURE) { 
     try { 
      String testName = this.getClass().getSimpleName().toString(); 
      int serverStatus = ServerStatus.getResponseCode(basePage.getCurrentURL()); 
      int i = 0; 
      while(i < serverStatusMap.size()) { 
       serverStatusMap.put(testName, serverStatus); 
       i++; 
      } 
      //serverStatusMap.put(testName, serverStatus); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

Вызов сохраненных значений в карте После класса:

@AfterClass 
public void sendEmailBasedOnFailure(ITestContext context) throws WebDriverException, Exception { 
    String tempTime = new SimpleDateFormat("hh.mm.ss").format(new Date()); 

    if(context.getFailedTests().size() > 0) { 
     SendEmailFile.sendEmailReport(
       "TIME: " + tempTime + " | " + this.getClass().getPackage().toString(), 


       "TIME: " + tempTime + " | " + this.getClass().getPackage().toString() + " | " + "CLASS NAME: " 
         + this.getClass().getSimpleName().toString() + "\n\n" + 
         "TOTAL NUMBER FAILED TESTS: " + context.getFailedTests().size() + "\n\n" + 
         "FAILED TEST CASES: " + context.getFailedTests().getAllMethods().toString() + "\n\n" + 
         serverStatusMap.toString()); 
    } 

Посмотрите на последней строке кода: «serverStatusMap.toString()»

Выходной ток на карте: {}

+0

Этот вопрос не имеет никакого отношения к селену. Удалите метки селена, селена-webdriver и webdriver. – CMerrill

ответ

1

Я не понимаю, что вы пытаетесь сделать.

Вы хотите отправить электронное письмо с неудачными тестами?

Почему бы не использовать соответствующие функции, такие как слушатель или репортер? Посмотрите на the documentation about logging.

+0

Я думаю, что сомнения должны быть очищены в комментариях – VedX

+0

@SeeKing Да, может быть. Но я жду отзывов от пользователя. Тогда я уточню свой ответ. – juherr

0

У вас есть инициализированная переменная "serverStatusMap". Из нижеприведенного кода

int i =0; 
while(i < serverStatusMap.size()) { 
       serverStatusMap.put(testName, serverStatus); 
       i++; 
      } 

Я вижу, что i = 0, а также serverStatusMap.size() = 0. Поэтому он никогда не войдет в цикл while. так что, наконец, когда вы печатаете карту, внутри карты нет ничего. Вам нужно изменить свое состояние.