簡體   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