0

このシナリオでは、すべての環境をデータプロバイダまたはそれ以外の方法で順番に繰り返していきたいと思っています。 LTIは以下の通り:私の添付Excelは1つの環境のためにTestNGでDataDrivenテストを使用して異なるEnvに対して@BeforeTestからURLを取得する方法

excel file

コードファイルを参照してください。注:クラス名を変更するだけで、他のすべての環境に対して同じコードが繰り返されます。私が直面しています

public class LTI_ENV { 

    public WebDriver driver; 
    private String sTestCaseName; 
    private int iTestCaseRow; 

    @BeforeTest 
    public void beforeMethod() throws Exception { 

     DOMConfigurator.configure("log4j.xml"); 
     // Getting the Test Case name, as it will going to use in so many places 
     // The main use is to get the TestCase row from the Test Data Excel sheet 
     sTestCaseName = this.toString(); 
     // From above method we get long test case name including package and class name etc. 
     // The below method will refine your test case name, exactly the name use have used 

     //Here I want to parameterize URL for each test ,is there any method that I can do ??? 
     //My application have 3 module i.e for LTI –Env 
     //1)Account Management (need to check pass?fail) 
     //2)Prep and rating (need to check pass?fail) 
     //3)Risk Eval (need to check pass?fail) 
     sTestCaseName = Utils.getTestCaseName(this.toString()); 
     Log.startTestCase(sTestCaseName); 
     ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData,"Sheet1"); 
     iTestCaseRow = ExcelUtils.getRowContains(sTestCaseName,Constant.Col_TestCaseName); 
     driver = Utils.OpenBrowser(iTestCaseRow); 
     new BaseClass(driver); 
    } 

    @Test(priority=1) 
    public void AccountManagement() throws Exception { 
     try { 
      AccountCreation_Action.Execute(iTestCaseRow); 
      AM_SubmissionLOB_Action.Execute(iTestCaseRow); 
      AM_Classification_Action.Execute(iTestCaseRow);  
      //Verification_Action1.Execute(); 
      if (BaseClass.bResult==true) { 
       ExcelUtils.setCellData("Pass", iTestCaseRow, Constant.Col_ResultStatus); 
      } else { 
       throw new Exception("Test Case Failed because of Verification"); 
      } 
     } catch (Exception e) { 
      ExcelUtils.setCellData("Fail", iTestCaseRow, Constant.Col_ResultStatus); 
      Utils.takeScreenshot(driver, sTestCaseName); 
      // This will print the error log message 
      Log.error(e.getMessage()); 
      // Again throwing the exception to fail the test completely in the TestNG results 
      throw (e); 
     } 
    } 

    @Test(priority=2,dependsOnMethods="AccountManagement") 
    public void PrepandRating() throws Exception { 

     try { 
      GenInfopage_Action.Execute(iTestCaseRow); 
      LocationSchedulePage_Actions.Execute(iTestCaseRow); 
      PolicyCoveragePage_Action.Execute(iTestCaseRow); 
      LocationInfo_Page_Action.Execute(iTestCaseRow); 
      LocationSchedulePage_Actions.Execute(iTestCaseRow); 
      AutoVehicleCoveragePage_Action.Execute(iTestCaseRow); 
      AutoPolicyCoveragePage_Action.Execute(iTestCaseRow); 
      PremiumSummaryPage_Action.Execute(iTestCaseRow); 
      //Verification_Action2.Execute(); 

      if (BaseClass.bResult==true) { 
       ExcelUtils.setCellData("Pass", iTestCaseRow+2, Constant.Col_ResultStatus); 
      } else { 
       throw new Exception("Test Case Failed because of Verification"); 
      } 
     } catch (Exception e) { 
      ExcelUtils[enter image description here][1].setCellData("Fail", iTestCaseRow+2, Constant.Col_ResultStatus); 
      Utils.takeScreenshot(driver, sTestCaseName); 
      Log.error(e.getMessage()); 
      throw (e); 
     } 
    } 

    @Test(priority=3,dependsOnMethods="PrepandRating") 
    public void RiskEval() throws Exception { 
     //will update code for this module 
    } 

    // Its time to close the finish the test case  
    @AfterTest 
    public void afterTest() { 
     // Printing beautiful logs to end the test case 
     Log.endTestCase(sTestCaseName); 
     // Closing the driver 
     driver.quit(); //I need to close all the browser and then will launch again for other environment tests 
    } 
} 

課題は以下のとおりです。

  1. は、上記のコードでは私が最初に私が唯一の環境を実行することができる午前したがって、ここでUtils.getTestCaseName(this.toString()); を使用してExcel TestCaseName欄にテストケース名を探しています一度に。私は私のテスト実行ステータスは/実行された場合のテストケースを実行したい

  2. は、そうでなければ、私はTestNGのを使用してこのシナリオを書くにはどうすればよい

をスキップ? @BeforeTestのように、各テスト環境のURLを取得する必要があります。 http://toolsqa.wpengine.com/selenium-webdriver/selenium-automation-hybrid-framework

+0

なぜあなたはより多くのアクセス可能なものにExcelファイルのうち、その構成を移動しませんか? – jonrsharpe

+0

実際には、これは私の毎日のSmoketestセットです...もっと使いやすいように、私はこのチェックポイント(Run/Norun)をExcelファイルに保存したかったのです。 このようにして退縮を設定したいと思っています。 他にも解決策はありますか? –

+0

また、すべてのテストケースのXMLファイルのパス(LTI.xml、PTE、.xml、LTQ.xml、INT.xml)をそれぞれExcelの行に保存してから、dataproviderを使用してRun状態とXMLパスをパラメータとして取得しました。 –

答えて

0
package TestNG.DataDriven; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
import org.testng.Assert; 
import org.testng.TestNG; 
import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class XMLRun { 

    public static XSSFWorkbook book; 
    public static XSSFSheet sheet1; 
    public static int LastRow=1; 

    @Test(dataProvider="XMLFeed") 
    public static void XMLRead(String Status,String XMLPath) throws Exception{ 

     if (Status.equalsIgnoreCase("Run")){ 
      // Create object of TestNG Class 
      TestNG runner=new TestNG(); 
      // Create a list of String 
      List<String> suitefiles=new ArrayList<String>(); 

      // Add xml file which you have to execute 
      suitefiles.add(XMLPath); 
      // now set xml file for execution 
      runner.setTestSuites(suitefiles); 
      // finally execute the runner using run method 
      runner.run(); 
     } else { 
      Assert.fail("Skipped Test"); 
      //sheet1.getRow(LastRow).createCell(4).setCellValue("Not Executed"); 
      //com.ReadExcel.WriteExcel.WriteExcelSheet(LastRow, "NotExecuted", 4); 
      com.ReadExcel.Excelreadwrite.excelwrite("Not Executed", LastRow); 
     } 
     LastRow++; 
    } 

    @DataProvider(name="XMLFeed") 
    public Object[][] getData() 
    { 
     Object[][] obj=new Object[5][]; 

     File file=new File("TestData.xlsx"); 

     try { 
      InputStream is=new FileInputStream(file); 

      book=new XSSFWorkbook(is); 

      sheet1=book.getSheet("Sheet1"); 

      for (int i=0;i<sheet1.getLastRowNum()+1;i++) 
      { 
       obj[i]=new Object[2]; 
       obj[i][0]=sheet1.getRow(i+1).getCell(1). 
       getStringCellValue(); 
       obj[i][1]=sheet1.getRow(i+1).getCell(8). 
       getStringCellValue(); 
       /*String result=login(username,password); 
       sheet1.getRow(i).createCell(2).setCellValue(result);*/ 
      } 
      book.close(); 
      is.close(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return obj; 
    } 
} 

を、私はこの方法を使用:

私が実装したフレームワークの下に見つけてください。それはうまくいっていますが、これをすべて1つのスイート内に存在させる必要があります。すべてのtestNGレポートを1つのレポート内で生成する必要があります。

ここに私のテストケースクラスは次のとおりです。

Image

関連する問題