注意:我无法粘贴确切的框架和代码,因为我工作的服务器无法从外部访问。因此,我将尝试用简单的语言和例子来解释我的问题。
概述- 我创建了一个 Selenium 自动化框架,其中包括 TestNG、Maven (POM.XML)、测试数据文件、脚本和一些可重用的函数。
我面临的问题- 我使用 Jenkins 来执行我的脚本。Jenkins 调用 POM.XML 文件,该文件又调用 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)
在这里,挑战是 - 在 catch 块中,如果我没有提到“throw e”,Jenkins 将不会理解失败已经发生并在其控制台输出中显示“BUILD PASSED”。我希望它在 Jenkins 控制台中显示“BUILD FAILURE”。我希望它显示“BUILD FAILED”的原因是 - 我已将 JIRA 与 Jenkins 集成。只有当 jenkins 显示 BUILD FAILED 时,它才会自动将错误记录到 JIRA。如果它是“BUILD PASSED”并且虽然完成状态是 UNSTABLE,Jenkins 的测试结果部分不会显示任何失败,它也会在 JIRA 中记录任何错误。
但是,那时我将无法将返回“失败”传递给主报告功能,以便它可以在报告中将登录步骤显示为失败。
我了解,根据 JAVA,我们可以在 catch 块中抛出或返回,但不能两者兼而有之。我们还有其他方法可以使这项工作吗?
我已经创建了端到端框架,但后来当我开始与 Jenkins 集成时意识到了这个问题(否则在那之前一切都很好)。
慕勒3428872
慕慕森
相关分类