断言验证Login的阳性和阴性测试用例



代码体:

    package testSteps;
import java.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import pageObjects.loginPage;
import utilities.XLUtils;
public class prc extends baseClass{
    
    @Test(dataProvider="LoginData")
    public void loginTestDDT(String uname, String pswd) throws InterruptedException {
        loginPage lp = new loginPage(driver);
        lp.enterUsername(uname);
        lp.enterPassword(pswd);
        lp.clickSignIn();
    
        try {
            lp.IsOpenChangeLogDisplayed();
            
                lp.closePopUp();
                lp.clickProfileIcon();
                Thread.sleep(2000);
                lp.clickSignOut();
                driver.switchTo().defaultContent();
                System.out.println("Login Successfully");
                
        } finally 
            
        {
            String actualMsg = driver.findElement(By.xpath("//div[@class='message']")).getText();
            System.out.println("actual Msg :"+actualMsg);
                String errorMsg= "Invalid password";
                
                    if(actualMsg.equals(errorMsg)) {
                            System.out.println("Test Case Passed");
                        }else{
                            System.out.println("Test Case Failed");
                    }
        }
    }
    @DataProvider(name="LoginData")
    String [][] getData() throws IOException{
        String path=System.getProperty("user.dir")+"/src/test/java/testData/LoginData.xlsx";
        int rownum=XLUtils.getRowCount(path, "Sheet1");
        int colcount=XLUtils.getCellCount(path,"Sheet1",1);
        String logindata[][]=new String[rownum][colcount];
        for(int i=1;i<=rownum;i++)
        {
            for(int j=0;j<colcount;j++)
            {
                logindata[i-1][j]=XLUtils.getCellData(path,"Sheet1", i,j);
            }
        }
        return logindata;
    }
}

我使用这个代码登录流测试。尝试块代码体将执行积极的测试用例,最后块代码体是消极的登录测试用例。这段代码工作正常,并且正在执行所有可能的阳性和阴性测试用例。

问题:我想验证正反用例是否按照预期结果执行Pass。并且还想用Toaster消息输出验证阴性测试用例。我想从这个测试的结果,所有6个测试运行不同的凭据按照预期的结果成功执行。第一次运行:使用有效的凭据通过带有无效凭据的Run:想要验证toaster消息是否给出了我们所期望的相同的消息,因此通过了全面测试PSS,通过6次测试。

**Console Window**
popUp is closed successfully
Login Successfully
actual Msg :Invalid password
Test Case Passed
actual Msg :Email not registered
Test Case Failed
actual Msg :Invalid password
Test Case Passed
actual Msg :Fields cannot be left blank !
Test Case Failed
actual Msg :Email not registered
Test Case Failed
===============================================
TestPlan
Total tests run: 6, Passes: 0, Failures: 6, Skips: 0
===============================================

工具使用:Maven Project, Eclipse, Selenium webDriver, TestNG, Java

当断言失败时,测试将失败。

断言两个对象相等。如果不是,那么使用给定消息

抛出错误。
 String actualMsg = driver.findElement(By.xpath("//div[@class='message']")).getText();
 Assert.assertEquals("Test Case Failed","Invalid password", actualMsg);

您应该在您的测试数据中添加额外的字段,就像这个例子,例如,errorMessage您的测试数据可能看起来像:

userName, password, errorMessage
validuser1,validpwd, 
validuser2,validpwd, 
validuser1,invalidpwd, Invalid password
invaliduser1,validpwd, Invalid user or password
,validpwd, Fields cannot be left blank!

在您的测试用例中,您可以检查是否存在错误消息,然后它应该显示错误消息,否则登录成功。

    @Test(dataProvider="LoginData")
    public void loginTestDDT(String username, String password, String errorMessage) throws InterruptedException {
        loginPage lp = new loginPage(driver);
        lp.enterUsername(uname);
        lp.enterPassword(pswd);
        lp.clickSignIn();

        if("".equalsIgnoreCase(errorMessage){
            lp.IsOpenChangeLogDisplayed();
            
                lp.closePopUp();
                lp.clickProfileIcon();
                Thread.sleep(2000);
                lp.clickSignOut();
                driver.switchTo().defaultContent();
                System.out.println("Login Successfully");
                
        } else {
            String actualMsg = driver.findElement(By.xpath("//div[@class='message']")).getText();
            System.out.println("actual Msg :"+actualMsg);
            Assert.equals(actualMsg,errorMessage);
        }
    }

您还可以利用selenium的开源框架。下面是使用QAF

的示例
@QAFDataProvider(dataFile = "/src/test/java/testData/LoginData.xls")
@Test(dataProvider="LoginData")
public void loginTestDDT(Map<String, Object> testData) throws InterruptedException {
        LoginPage loginPage = new LoginPage();
        loginPage.doLogin(testData.get("userName").toString(), testData.get("password").toString());
        String errorMessage = testData.get("errorMessage").toString();
        if(StringUtils.isBlank(errorMessage){
            //validate login successful
        }else{
            loginPage.getErrorEle().verifyVisible();
            loginPage.getErrorEle().verifyText(errorMessage);
        }
}

相关内容

最新更新