当前位置: 首页 > 知识库问答 >
问题:

使用TestNG、Java和InteliJ思想的DataProvider

闾丘博超
2023-03-14
package com.insurance.testCases;

import com.insurance.pageObjects.loginPage;
import com.insurance.utilities.excelReader;
import org.openqa.selenium.NoAlertPresentException;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.IOException;

public class TC_LoginDdt_002 extends baseClass{

    @Test(dataProvider = "loginData")
    public void loginDDT(String user,String pwd){

        driver.get(baseUrl);

        loginPage lp=new loginPage(driver);
        lp.setUserName(user);
        lp.setPassword(pwd);
        lp.clickSubmit();

        if (isAlertPresent()==true){
            driver.switchTo().alert().accept();
            driver.switchTo().defaultContent();
            Assert.assertTrue(false);
        }
        else {
            Assert.assertTrue(true);
            lp.clickLogout();
            driver.switchTo().alert().accept();
            driver.switchTo().defaultContent();
        }

    }
    public boolean isAlertPresent(){
        try {
            driver.switchTo().alert();
            return true;
        }
        catch (NoAlertPresentException e){
            return false;
        }
    }

    @DataProvider(name="loginData")
    String [][] getData() throws IOException {

        String path="C:/Users/lachi/IdeaProjects/InetBanking_v1/target/DataSet.xls";


        int rownum = excelReader.getRowCount(path,"DataSet");
        int colcount = excelReader.getCellCount(path,"DataSet",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]=excelReader.getCellData(path,"DataSet",i,j);
            }
        }
        return logindata;

    }
}

以下例外情况:

java.lang.NullPointerException
    at com.insurance.testCases.TC_LoginDdt_002.loginDDT(TC_LoginDdt_002.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
    at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109)

基类:

package com.insurance.testCases;

import com.insurance.utilities.Log;
import com.insurance.utilities.readConfig;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.testng.annotations.Parameters;

import java.util.concurrent.TimeUnit;

public class baseClass {
    readConfig readconfig = new readConfig();

    public String baseUrl = readconfig.getApplicationUrl();
    public String username = readconfig.getUsername();
    public String password = readconfig.getPassword();
    public static WebDriver driver;

    public static Logger logger;

    @Parameters("browser")
    @Before
    public void SetUp(){

        Log.startLog("Test is Starting");
        logger = Logger.getLogger("einsurance");

        System.setProperty("webdriver.chrome.driver","Drivers/chromedriver.exe");
        driver = new ChromeDriver();


        //System.setProperty("webdriver.edge.driver","Drivers/msedgedriver.exe");
       // driver = new EdgeDriver();

        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }

    @After
    public void tearDown(){
        Log.endLog("Test is Ending!");

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        driver.quit();
    }
    public String randomestring(){
        String generatedstring = RandomStringUtils.randomAlphanumeric(20);
        return (generatedstring);
    }
    public static String randomeNum(){
        String generatestring2 = RandomStringUtils.randomNumeric(8);
        return (generatestring2);
    }
}

共有1个答案

董花蜂
2023-03-14

问题的根本原因在于基类。

  1. 您正在通过之前之后提供的单元初始化/清除WebDriver对象。
  2. TestNG不识别JUnit setup和teardown注释

要解决此问题,您需要做的只是使用

    null
 类似资料:
  • 本文向大家介绍BFS和DFS的实现思想相关面试题,主要包含被问及BFS和DFS的实现思想时的应答技巧和注意事项,需要的朋友参考一下 参考回答: BFS:(1)顶点v入队列(2)当队列为非空时继续执行否则停止(3)从队列头取顶点v,查找顶点v的所有子节点并依次从队列尾插入(4)跳到步骤2 DFS:(1)访问顶点v并打印节点(2)遍历v的子节点w,若w存在递归的执行该节点。

  • 我正在尝试使用JPa连接到我的mysql数据库。 我生成了persistance.xml: 并且通过这样做,intelij生成了POJO类: 我已经创建了实体管理器,并希望从中获得结果: 和路线: 然而,当我导航到localhost:8080/hi 它抛出 在浏览器和 控制台中。我不知道什么会导致这个问题,非常感谢所有的帮助

  • 贪心算法 贪心算法(又称贪婪算法),核心思想在求解问题的时候,总是选择当前情况的最优解。贪心算法不是所有问题都能得到整体最优解,核心在于贪心算法的策略选择,选择的贪心策略需要具备无后效性,即某个状态以前的过程不能影响以后的状态至于当前状态有关。 贪心算法总是选择当前情况下的最优选择,而不是从整体最优考虑。贪心算法是做的局部最优选择,最终的结果可能在整体环境下不是最优解,但非常接近最优解。贪心算法也

  • 本文向大家介绍GAN网络的思想相关面试题,主要包含被问及GAN网络的思想时的应答技巧和注意事项,需要的朋友参考一下 参考回答: GAN用一个生成模型和一个判别模型,判别模型用于判断给定的图片是不是真实的图片,生成模型自己生成一张图片和想要的图片很像,开始时两个模型都没有训练,然后两个模型一起进行对抗训练,生成模型产生图片去欺骗判别模型,判别模型去判别真假,最终两个模型在训练过程中,能力越来越强最终

  • 我正在学习使用intelliJ IDEA开发OSGi应用程序,我选择了Apache's felix作为运行时,我遇到的问题如下:屏幕截图在这里 我已经开发了模块示例1、2和2b,2B的包结构与2相同,但服务接口位于模块2,模块2B只是为了替代服务而设计的,但我不能成功地做到这一点,felix告诉我模块2B找不到,我不知道如何使模块2B能找到模块2中确切的包中定义的服务。 我想问题就在这里 模块2b

  • 本文向大家介绍简述flux思想相关面试题,主要包含被问及简述flux思想时的应答技巧和注意事项,需要的朋友参考一下 Flux的最大特点,就是数据的"单向流动"。 1.用户访问View 2.View发出用户的Action 3.Dispatcher收到Action,要求Store进行相应的更新 4.Store更新后,发出一个"change"事件 5.View收到"change"事件后,更新页面 参考链