Поддерживает ли TestNG ошибки типа WARN, кроме PASS / FAIL? - PullRequest
5 голосов
/ 15 ноября 2011

Я использую TestNG совместно с Selenium для тестирования веб-приложения, в котором есть многостраничные потоки (например, зарегистрируйтесь и заполните свой профиль на 8 разных страницах).

Я использовал подход Selenium PageObject и реализовал проверку кода на каждой странице, которая проверяет, например, Сообщения «php error» не отображаются на странице, в этом случае, если эта ошибка обнаруживается на одной странице, полный поток (который является методом @Test, ссылающимся на несколько объектов PageObjects внутри) завершится неудачей.

Есть некоторые ошибки, о которых я хотел бы сообщить, но не отмечать весь поток как сбойный (например, неправильно экранировать кавычки или символы HTML). У меня может быть общая ошибка на всех страницах, которая не препятствует выполнению всего потока, и это сэкономило бы время, если я смогу сообщить о предупреждении и все еще иметь возможность продолжить тестирование.

Является ли Reporter лучшим способом сделать это? С точки зрения удобства использования было бы неплохо показывать отчеты в красных (неудачных), зеленых (проходных) и оранжевых (предупреждающих) цветах.

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Я нашел способ сделать это, хотя это немного взломать. В тестовом методе, где вы хотите предупредить вместо прохода, выполните следующее:

...
import org.testng.Reporter;
...

@Test
public void myTestMethod(){
   if( someConditionThatCausesWarning ) {
       Reporter.getCurrentTestResult().setAttribute("warn", "My warning message");
   }
}

Устанавливает атрибут объекта результата теста, к которому вы затем можете обращаться в своем настраиваемом прослушивателе и репортере. Я установил многословие на 0:

...
TestNG tng = new TestNG();
tng.setVerbose(0);
...

, который отключает стандартные отчеты в режиме реального времени.

Затем в слушателе и / или репортере вы делаете:

testResult.getAttribute("warn");

чтобы увидеть, есть ли предупреждение вместо ПРОПУСК.

0 голосов
/ 09 января 2012

Нет простого способа изменить репортер, кроме как зайти в исходный код и внести изменения самостоятельно (и я готов сделать код более легким для изменения, если у вас возникнет желание пойти по этому пути, например, сделать его). легко подкласс и т.д. ...) или написав свой собственный репортер (я понимаю, почему вы хотите этого избежать).

Рассматривали ли вы использование Reporter.log ()? Эти строки появятся в окончательных отчетах в специальном разделе.

Также обратите внимание, что TestNG получает новые отчеты в новой версии:

http://beust.com/weblog/2012/01/01/ushering-testng-into-the-new-year/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...