繁体   English   中英

通过testng Framework执行时,我的硒测试不是从cmd或Jenkins运行的。 结果:总测试次数:0,失败次数:0,跳过次数:0

[英]My selenium tests aren't running from either cmd or Jenkins when executed via testng Framework. Results: Total tests run: 0, Failures: 0, Skips: 0

Selenium和自动化的新手。

首先,当我使用Junit进行测试时,我的测试在Eclipse中运行良好。 但是,如果我通过Jenkins或CLI启动测试,则会得到以下结果: 运行的测试总数:0,失败:0,跳过:0

现在,我可能会弄错测试的结构,或者做的事情完全错了。 我四处张望,所有在线解决方案似乎都无法解决我的问题。

我的测试只是一个简单的登录测试。

我想我可能将框架混合在一起或以错误的方式一起使用它们。 我用TestNG踢了我的硒测试中, 我想 我再次举起手来,承认我对此并不陌生,所以我希望有人可以告诉我我要去哪里。 我确实在实际的硒测试文件中注意到,我没有使用任何Testng函数或任何东西,而只是使用了硒Web驱动程序。 我在下面列出了我的代码文件以及从测试中得到的结果。

如果我错过了一个简单的步骤,或者我尝试了一些不可能的事情,我再次道歉,我只需要一些帮助或专家的正确指导。 感谢您的任何帮助。

测试

出于安全原因,我已经删除了实际的网址和信用。

    package testing;

    import static org.junit.Assert.fail;

    import java.util.concurrent.TimeUnit;

    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoAlertPresentException;
    import org.openqa.selenium.NoSuchElementException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;

    import org.testng.Assert;



    public class login {
      private WebDriver driver;
      private String baseUrl;
      private boolean acceptNextAlert = true;
      private StringBuffer verificationErrors = new StringBuffer();

      @Before
      public void setUp() throws Exception {
        System.setProperty("webdriver.gecko.driver","C:\\gecko\\geckodriver.exe");
        driver = new FirefoxDriver();
        baseUrl = "";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }

      @Test
      public void testLogin() throws Exception {
        driver.get(baseUrl + "");
        driver.findElement(By.id("email")).clear();
        d

river.findElement(By.id("email")).sendKeys("");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("");
    driver.findElement(By.xpath("//input[@value='Login »']")).click();
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

的testng.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Sample Suite">

        <test name="Learning Jenkins">
        <classes>

            <class name="testing.login"></class>

        </classes>

    </test>

</suite> 

CLI或Jenkins测试的结果

[TestNG] Running:
  C:\Users\keating99\workspace\FdimTests\testng.xml


===============================================
Sample Suite
Total tests run: 0, Failures: 0, Skips: 0
===============================================

Finished: SUCCESS

我再次意识到我在实际测试中没有使用任何Testng,但是测试的目的只是开始使用硒来进行测试。 也许我正在以错误的方式进行操作。

硒测试有效,我可以在Eclipse中启动。

感谢您的任何帮助!

尽管这也许更适合作为注释,但是有几件事需要澄清,因为import org.junit.Test, Before, After, etc表明您已经编写了JUnit测试,但是您提到的是TestNG,因此它取决于您真正想做的是:

  • 编写JUnit测试并通过TestNG执行它们 :虽然有些奇怪(我要判断谁?!),但根据文档 ,可以通过确保在执行过程中JUnit在类路径中可用并将junit属性设置为true来实现,例如<test name=name="Learning Jenkins" junit="true">

  • 编写和执行TestNG测试 :用对应TestNG (例如org.testng.annotations.Test替换JUnit导入

我再次意识到我在实际测试中没有使用任何Testng,但是测试的目的只是开始使用硒来进行测试。 也许我正在以错误的方式进行操作。

目前,您正在使用JUnit,而不是TestNG :-)。 无论如何,仅通过验证是否没有错误消息,您就可以使用带有fail(verificationErrorString)方法,尽管您的测试可能不完整。 您应该添加一些断言以检查加载的页面上是否存在任何数据正确。 您可以阅读TestNG-Selenium快速教程或任何其他您想要的文档,那里有大量的文档。 简而言之,“良好/完整”测试至少应该( 这里描述的良好测试的质量-您实际上并不是在编写单元测试,但仍然适用):

  • 准备测试的所有条件-例如,加载并启动驱动程序
  • 调用/访问测试的零件-例如:加载页面,并检索表的内容
  • 验证结果是否正确-例如:确保表格包含预期数据
  • 清理,例如回滚修改的数据(如果有),关闭连接等-例如,关闭驱动程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM