将 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 );
}
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 );
}