-2

Eclipse と TestNG で Selenium2 (WebDriver) の学習を開始しました。DataProvider について質問があります。たとえば、ユーザー、パスワード、ログインボタンを含むログインページがあります。TestNG でテストを作成しました。UIオブジェクト(別のクラスを持つ)にpageobjectを使用し、別のクラスで実際のテストを使用しました。

ここで、glogin はクラスであり、login は要素の検索とキーの送信が行われる関数であり、これは TestNG アノテーションを持つ別のクラス gtest (メイン テスト) で呼び出されます。

値を取るメイン スクリプトでそのクラスにアクセスします。

@test(Dataprovide = "test")
public void glogin(String user, String pass)
{
  glogin log1 = new login;
  log1.login(user,pass);
}

私は次のExcelシートを持っています

user      pass    
John      Smith      
Carson    Black    
Carla     ck23
test      test4

dataprovider を使用して Excel シートから配列としてデータを取得し、それを Test で使用すると、次のエラーが表示されます。

org.testng.TestNGException: 

The data provider is trying to pass 4 parameters but the method plus.gmail#glogin takes 2
    at org.testng.internal.Invoker.injectParameters(Invoker.java:1337)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1225)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:128)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1203)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
    at org.testng.TestNG.run(TestNG.java:1036)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

どんな助けでも本当に感謝しています。

Dataprovider で注釈が付けられたメソッドのコードは次のとおりです。

    @DataProvider(name="test")
        public Object[][] createdata1()throws Exception
        {
            Object[][] retobj = getexcel();
            return retobj;              
        }

        private String[][] getexcel() throws Exception
        {
            // TODO Auto-generated method stub

            String[][] tabarray = null;
            try {
                Workbook wb1 = Workbook.getWorkbook(new 

File("F:/testdata.xls"));

                Sheet sheet = wb1.getSheet("userlogin");

                Cell tablestart = sheet.findCell("login");

                int startrow = tablestart.getRow();
                int startcol = tablestart.getColumn();

                Cell tableend = sheet.findCell("login",startcol+1,startrow+1, 

100, 64000, false);

                int endrow = tableend.getRow();
                int endcol = tableend.getColumn();

                System.out.println("startRow="+startrow+", endRow="+endrow+", 

" + "startCol="+startcol+", endCol="+endcol);

                 tabarray = new String[endrow - startrow + 1][endcol - 

startcol + 1];

                int ci = 0;
                for(int i = startrow +1 ;i<endrow;i++,ci++)
                {

                    int cj = 0;
                    for(int j = startcol + 1;j<endcol;j++,cj++)
                    {
                        tabarray[ci][cj] = sheet.getCell(j, 

i).getContents();
                        System.out.println(tabarray[ci][cj]);

                    }   
                }

            } catch (BiffException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return tabarray;
        }

test(Dataprovider = "test")
public void glogins(String user, String pass)
{
  glogin log1 = new glogin(driver);
  log1.login(user,pass);
}

テストを実行すると、次のようにExcelからデータを受け取りました

john
smith
carson
Black
carla
ck23
test
test4

出力として

4

4 に答える 4

0

エラーメッセージは一目瞭然ではありませんか?

The data provider is trying to pass 4 parameters but the method plus.gmail#glogin takes 2

デバッガーを使用して、データプロバイダーが2つではなく4つのパラメーターを返す理由を理解します。

于 2013-01-18T05:08:35.693 に答える
0

ラインを交換する

tabarray = new String[endrow - startrow + 1][endcol - startcol + 1];

tabarray = new String[endrow - startrow - 1][endcol - startcol - 1];
于 2014-07-26T14:04:56.723 に答える
0

使用する

tabarray = new String[endrow - 1][endcol - 1]; instead of //tabarray = new String[endrow - startrow + 1][endcol - startcol + 1];

2*2 配列のみを返すつもりだったので

于 2013-06-17T08:31:36.470 に答える
-1

Kalyan が投稿した回答に同意します。データプロバイダーのExcelシートの最初と最後の列である理由は、関数によって引数/パラメーターとしてもカウントされます。したがって、tabArray=new String[endRow-startRow-1][endCol-startCol-1];これが役立つことを願って、幸せなテストを使用してください...

于 2013-11-20T17:50:47.377 に答える