其他分享
首页 > 其他分享> > Selenium自行整理【四十五】

Selenium自行整理【四十五】

作者:互联网

8.5、TestNG 测试技巧

8.5.1、依赖性测试

比如下面的测试代码:

package com.testng.test;

import static org.testng.Assert.assertEquals;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class testMail {
    //登录方法
    public static void login(WebDriver driver,String username,String password){
        driver.findElement(By.id("idInput")).clear();
        driver.findElement(By.id("idInput")).sendKeys(username);
        driver.findElement(By.id("pwdInput")).clear();
        driver.findElement(By.id("pwdInput")).sendKeys(password);
        driver.findElement(By.id("loginBtn")).click();
    }
    //退出方法
    public static void logout(WebDriver driver){
        driver.findElement(By.linkText("退出")).click();
    }
    @Test
    public void verifyLogin() {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("http://www.126.com");
        String username = "testingwtb";
        String password = "a123456";
        login(driver,username,password);  //登录
        String text = driver.findElement(By.id("spnUid")).getText();
        assertEquals(text, "testingwtb@126.com");
        logout(driver);  //退出
        driver.quit();
    }
    @Test (dependsOnMethods = {"verifyLogin"})
    public void verifySearchMail() {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("http://www.126.com");
        String username = "testingwtb";
        String password = "a123456";
        login(driver,username,password);
        //搜索
        WebElement search = driver.findElement(By.xpath("//input[@class='nui-ipt-input' and @type='text']"));
        search.sendKeys("小明");
        search.sendKeys(Keys.ENTER);
        String text = driver.findElement(By.className("nui-title-text")).getText();
        System.out.println(text);
        assertEquals(text,"搜索结果");
        logout(driver);
        driver.quit();
    }
}

--------------------------------------------------------------------------------------------------------------------------------、

        上面的例子中定义了两个测试:一个验证登录,另一个验证账户信息。请注意,通过使用 Test 注释的dependsOnMethods={"verifyLogin"}子句,verifyAccountInfo 测试指定了它依赖 verifyLogin()方法。

 

8.5.2、忽略测试

        有时候测试用例还没准备好,可以给测试用例加上@Test(enable = false),用来路过此用例的执行,并且并不会将该用例计算到 Skips 的结果中 。

 

8.5.3、参数化测试

       TestNG 中另一个有趣的特性是参数化测试。在 JUnit 中,如果您想改变某个受测方法的参数组,就只能给每个不同的参数组编写一个测试用例。多数情况下,这不会带来太多麻烦。然而,我们有时会碰到一些情况,对其中的业务逻辑,需要运行的测试数目变化范围很大。

        在这样的情况下,使用 JUnit 的测试人员往往会转而使用 FIT(验收测试框架)这样的框架,因为这样就可以用表格数据驱动测试。但是 TestNG 提供了开箱即用的类似特性。通过在 TestNG 的 XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测试用例,甚至有可能会得到不同的结果。这种技术完美地避免了只能假定一切正常的测试,或是没有对边界进行有效验证的情况。

例 1:通过 testng.xml 传递参数给测试代码

package com.testng.test;

import static org.testng.Assert.assertEquals;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestBaidu {
    private WebDriver driver;
    private String baseUrl;
    
    @BeforeClass
    public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "https://www.baidu.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }
    @Test
    @Parameters("test1") //设置测试方法的入参
    public void testCase(String test1) throws Exception {
        driver.get(baseUrl + "/");
        System.out.println("sreach key value:"+ test1);
        driver.findElement(By.id("kw")).sendKeys(test1);
        driver.findElement(By.id("su")).click();
        Thread.sleep(2000);
        String title =driver.getTitle();
        assertEquals(title, test1+"_百度搜索");
    }
    @AfterClass
    public void tearDown() throws Exception {
        driver.quit();
    }
}

--------------------------------------------------------------------------------------------------

对应的 testng.xml 文件配置如下:

标签:String,四十五,Selenium,driver,testng,自行,findElement,org,import
来源: https://blog.csdn.net/qq_31942921/article/details/98875159