Примечание : я не могу вставить точную структуру и код, поскольку сервер, на котором я работаю, не доступен извне.Поэтому я попытаюсь объяснить мою проблему простыми словами и примерами.
Обзор - Я создал инфраструктуру автоматизации Selenium, которая включает TestNG, Maven (POM.XML), файлы тестовых данныхСкрипты и несколько функций многократного использования.
Проблема, с которой я столкнулся - Я использую Jenkins для выполнения своих сценариев.Дженкинс вызывает файл POM.XML, который inturn вызывает файл testng.xml (в файле testng.xml я упомянул сценарии, которые должны быть выполнены)
Допустим, я должен выполнить действие входа в систему
Основной сценарий
@Test
Public void maintest ()
{
//I use Extent reports for reporting purpose and hence I have created extent
//reporting reusable function which is called in the below fashion.
//If Login method returns pass, ExtentReportingFunc passes Pass to its
//function and displays Pass for that particular Login step in the report.
ExtentReportingFunc (Login(UserName, Password));
}
Многоразовые функции
Public String Login (String UN, String Pass)
{
//Sendkeys and set UN
driver.findelement (By.id("username")).sendkeys(UN);
//Sendkeys and set Password
driver.findelement (By.id("password")).sendkeys(pass);
//Click Login
driver.findelement (By.id("login")).click ();
//Verifying the message "Welcome User" is displayed after login
try
{
if (driver.findlement (By.id("welcomemessage")).isdisplayed ();
{
return pass;
}
} catch (Exception e)
{
//If welcome message is not found then return fail to the Reporting function
return "fail";
//Below code will be unreachable which is correct as per Java but that is the challenge.
// I tried several ways to find a work around to return fail as above as
// well throw exception but no luck till now.
// Upon throwing exception in the below way, Jenkins displays build as
//failed. If it is not done, though the script has failed,
//Jenkins displays "BUILD PASSED"
throw e;
}
}
//Extent Reporting function
ExtentReportingFunc (String status)
{
log.report (status);
}
Здесь проблема в блоке перехвата, если я НЕ упоминаю«throw e», Дженкинс не поймет, что произошла ошибка, и отобразит «BUILD PASSED» в выводе консоли.Я хочу, чтобы он отображал «BUILD FAILURE» в консоли Jenkins.Причина, по которой я хочу, чтобы он отображал «BUILD FAILED», заключается в том, что я интегрировал JIRA с Jenkins.Только когда jenkins показывают BUILD FAILED, он автоматически регистрирует ошибки в JIRA.Если это «BUILD PASSED» и хотя готовое состояние UNSTABLE, в разделе результатов теста Jenkins NOR сбои не будут отображаться, он регистрирует все ошибки в JIRA.
Однако в этот раз я не смогупередать return «fail» в основную функцию создания отчетов, чтобы он мог отображать шаг входа в систему как ошибку в отчете.
Я понимаю, что в соответствии с JAVA мы можем либо выбросить, либо вернуться в блоке catch, но не в обоих.Есть ли какой-нибудь другой способ, которым мы можем сделать эту работу?
Я уже создал сквозную среду, но позже понял эту проблему, когда начал интеграцию с Jenkins (или до этого все было хорошо).