java - 如何根据测试结果更改 Jenkins 输出?

标签 java selenium jenkins selenium-webdriver testng

我正在使用 selenium webdriver 2.47.1 和 TestNG 进行自动化过程。在我的代码中,我有 12 个不同的测试,在每个测试结束时,我使用 if else 循环检查测试是否通过。下面给出了示例代码..

@Test(priority = 0)
public void Login()  {
     String UserName = ex.getExcelValue(scenarioName, 2, 4);
     cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[1]/td[2]/input")).sendKeys(UserName);
     String PassWord = ex.getExcelValue(scenarioName, 3, 4);
     cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[2]/td[2]/input")).sendKeys(PassWord);
     cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[3]/td[2]/input")).click();
     cd.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
     String ExpTitle = "Demo Practice";
     String ActTitle = cd.getTitle();
     if(ExpTitle.equals(ActTitle))   {
         ex.setExcelValue(scenarioName, 2, 8, "PASSED");
         System.out.println("PASSED : User Logged in Successfully");
     } else  {
         ex.setExcelValue(scenarioName, 2, 8, "FAILED");
         System.out.println("FAILED : User Not Logged in");
     }
}

我正在使用 Jenkins 进行持续集成。现在,当我运行上面的脚本时,Jenkins 构建已成功完成,即使测试失败了。如何改变这个?

最佳答案

我认为你正在寻找的东西可以这样处理。使用 testng 断言进行测试。这样,您的持续集成环境就可以显示您的测试失败。

@Test
public void Login()  {
    String UserName = ex.getExcelValue(scenarioName, 2, 4);
    cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[1]/td[2]/input")).sendKeys(UserName);
    String PassWord = ex.getExcelValue(scenarioName, 3, 4);
    cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[2]/td[2]/input")).sendKeys(PassWord);
    cd.findElement(By.xpath("//body/center/form/table/tbody/tr/td/div/div[2]/table/tbody/tr[3]/td[2]/input")).click();
    cd.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    String ExpTitle = "Demo Practice";
    String ActTitle = cd.getTitle();
    ex.setExcelValue(scenarioName, 2, 8, "FAILED");
    assertEquals(ActTitle, ExpTitle, "Expected: "+ExpTitle+" but found: "+ActTitle);
    ex.setExcelValue(scenarioName, 2, 8, "PASSED");

}

我想我会避免一些事情:

  • 在测试中使用优先级。使它们相互依赖,您将无法使方法并行运行
  • 避免System.out.println()。断言和记录器是你的 friend 。

关于java - 如何根据测试结果更改 Jenkins 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667432/

相关文章:

java - 并发 - 为什么会出现这种死锁

java - MySql 数据库连接问题 - ClassNotFoundException

java - 将变量重新初始化为常量

c# - Chrome 驱动程序 : How to disable PDF plugin

java - 同时使用@DataProvider 和@Parameters

Python 3.5 - "Geckodriver executable needs to be in PATH"

java - 将 Jenkins CI 部署到 Heroku

Jenkins - 获取远程仓库 'origin' 时出错

Java Android 使用无键 JSON 对象迭代 JSON 数组

Jenkins - 执行人意外死亡