TestNGセルを使用した動的テスト

次のシナリオの最良のアプローチは何ですか。

私は動的なデータを取るいくつかのテストを実行する必要があります。最初の値のセットはかなり標準ですが、1つは動的であり、任意の長さにすることができます。私は2つのExcelシートからこのデータを取得しています。

  String[][] vplmns = readVPLMN.getArrayData("Test_Data.xlsx","VPLMNS");
  Object[][] testObjArray = ExcelUtils.getTableArray("Test_Data.xlsx","Sheet2");

私は次に、以下を使ってテストを実行します:

@Test(priority=2)
public void createCampaignNew() throws Exception{

    String[][] cars = readVPLMN.getArrayData("Test_Data.xlsx","Cars");
    Object[][] ObjArray = ExcelUtils.getTableArray("Test_Data.xlsx","Personal_Deails");
    System.out.println("Running name test");

    for (int i = 351; i

データの再取得とすべてが正常に実行されますが、問題はテストが1つの連続シナリオとして実行されるためです。だから、私はテストを独立して実行する方法を見つけようとしています。私はTestNGファクトリを使ってみました(
http://testng.org/doc/documentation-main
.html#factories

)しかし、オブジェクトのリストをretrunしようとすると、Webブラウザを初期化する方法を少し混乱させています。テストの量が多いため、テストを1つのウィンドウで実行する必要があります。
TESTNG工場を正しく使用した例を以下に示します。

 public class FactoryTestSimple {

 String i;
 String j;

    @Factory(dataProvider = "userModeProvider")
    public FactoryTestSimple(String i,String j) {
        this.i = i;
        this.j = j;
    }

public String getI() {
    return i;
}

public void setI(String i) {
    this.i = i;
}

public String getJ() {
    return j;
}

public void setJ(String j) {
    this.j = j;
}


@BeforeClass(alwaysRun = false)
public void init() throws Exception {
    System.out.println("Before Running the class userMode is ");
}



@Test(groups = "testFactory", description = "test method1")
public void testMethod1() throws Exception {
    FactoryTestSimple s =new FactoryTestSimple("Input one","Input2");
    System.out.println("------");
    System.out.println(s.getI());
    System.out.println("------");
    System.out.println(s.getJ());

}



@DataProvider
private static String [][] userModeProvider() {


    String[][] obj = new String[3][2];

    for (int i=0;i<=3;i++) {               
        for (int j=0;j<=2;j++){

    }

}
    return obj;
}
}

誰も私が2つの永遠のものを組み合わせるのを助けることができますかnull値で終わるか、失敗します。

私の完全なテストケースは以下の通りです:

@BeforeClass(alwaysRun = true)
public void setup() throws MalformedURLException{
    FirefoxBinary binary = new FirefoxBinary(new File("C:\Program Files (x86)\Mozilla Firefox\firefox.exe"));
    FirefoxProfile profile = new FirefoxProfile();
    this.driver = new FirefoxDriver(binary, profile);

    //this.driver = new FirefoxDriver();
    wait = new WebDriverWait(driver, 10);
    Create_Person = PageFactory.initElements(driver, Create_Person.class );
}

@AfterClass(alwaysRun = true)
public void teardown(){
    this.driver.quit();
}

@Test(priority=1,retryAnalyzer=Retry.class)
public void testSignUpMainPage(){
    Create_Person.loadPage();

}

@Test(priority=2)
public void createCampaignNew() throws Exception{

    String[][] cars = readVPLMN.getArrayData("Test_Data.xlsx","Cars");
    Object[][] ObjArray = ExcelUtils.getTableArray("Test_Data.xlsx","Personal_Deails");
    System.out.println("Running name test");

    for (int i = 351; i
ベストアンサー

問題は、 createCampaignNew
には次の2つの責任があるということです。データを取得してキャンペーンを実際に作成します。

createCampaignNew
がデータを取得するためのオブジェクト(依存性注入)をパラメータとして受け取るべきクラス。このオブジェクトには、ファイル名とその他のパラメータ(
“Test_Data.xlsx”、 “Cars”)を受け取るメソッドと、 createCampaignNew
が介入するデータオブジェクトを返すメソッドが必要です。

List campaignsData = this.dataRetrieval.getData("Test_Data.xlsx","Cars");
for(CampaignData campaignData : campaignsData) {
    create_Person.createCampaign(campaignData);
    ...
}

ドメインに応じて有効なキャンプを返すのは dataRetrieval
オブジェクトの責任です(おそらく名前が無効なキャンペーンが有効です)。欠落しているオプションのデータを適切に処理するのは
create_Person オブジェクトの責任です。

createCampaing(CampingData data){
    this.setName(data.name());
    try {
       this.setOptionalCampaingData(data.optionalData());
    } catch (UserDefinedExpection e) {
        ...(handle the expection somehow)...
    }
}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です