将 TestNG 添加到现有的 Selenium 脚本 - 我的 pass/fail 输出与 TestNG 不匹配

Adding TestNG to and existing Selenium Script - My pass/fail Output not matching up with TestNGs

Whosebug 的初学者,Java/Scripting/Selenium/TestNG

的新手

我创建了一个简单的脚本来检查页面元数据,如果预期的页面标题正确打印通过或失败,我修改了我找到的教程中的一些代码。后来我尝试添加一些 TestNG 框架的测试,对代码进行更多修改,但即使说测试可能会在我的打印输出中失败,TestNG 输出也会失败

这是我到目前为止的代码

package live_MetaData;
import org.testng.annotations.*;
import static org.testng.Assert.*;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;



public class Demo{
         private WebDriver driver;
         private StringBuffer verificationErrors = new StringBuffer();

         @BeforeClass(alwaysRun = true)
         public void setUp() throws Exception {
          System.setProperty("webdriver.gecko.driver", "C:\Automation\SeleniumFiles\Browser Drivers\geckodriver.exe");
          driver = new FirefoxDriver();
          driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        }

        @Test
        public void DemoTest() throws Exception {
        String baseUrl = "http://demo.guru99.com/test/newtours/";
        String expectedTitle = "Not Meta";
        String actualTitle = "";

        driver.get(baseUrl);

        actualTitle = driver.getTitle();

        if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");}}

        //close Fire fox
        @AfterClass(alwaysRun = true)
        public void tearDown() throws Exception {
          driver.quit();
          String verificationErrorString = verificationErrors.toString();
          if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);

    }

}}

这给了我这个输出文本:

Test Failed

PASSED: DemoTest

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

感谢您的任何帮助,特别是如果它可以解释我哪里出错了以及为什么它应该像(希望)解决方案那样,我从星期二什么都不知道到现在。

您的实际标题是“欢迎:Mercury游览”和预期标题=“非元

您的代码:

if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");}

问题的控制将转到 else ,因为 if 条件不满足。您的测试用例已通过,但您正在其他地方打印 "Test Failed" 。

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 0
===============================================

这意味着测试用例通过计数为1。
测试用例失败计数为0.
测试用例skip计数为0.

我的建议:使用断言来验证这种情况。

使用此代码进行断言:

@Test
        public void DemoTest() throws Exception {
        String baseUrl = "http://demo.guru99.com/test/newtours/";
        String expectedTitle = "Not Meta";
        String actualTitle = "";
        driver.get(baseUrl);
        actualTitle = driver.getTitle();
        assertEquals(actualTitle , expectedTitle );

}