すべてのテストでWhileループを使用するSelenium Webdriver TestNG(Java)

私はSelenium Webdriver
Testngの新機能で、CSVReaderを使用してデータ駆動型フレームワークを開発しようとしています

私はTestngで5つのテストを行い、それらをすべて異なる環境で実行する必要があります。だから基本的に私は別のURLとクライアントを選択する必要がありますが、他のページ、要素は同じままです。

私の質問は、最初の行を読み込んですべてのテストを実行してから2行目を読み込むようにwhileループをどこに置くかです。

私はCSVリーダーをクラスレベルで、スイートの前、メソッドの前などに初期化しようとしましたが、エラーをスローしました。
@Test
の中に入れていれば特定のテストのために動作しますが、私はインターネット上の関連する答えを見つけることができませんでした。

以下は高レベルのコードです:

public class Portal1 {
    WebDriver driver;
    @BeforeSuite
    public void beforeMethod() {
    }
    @BeforeTest
    public void SetUp() {
    config = new Configreader();

    }
@DataProvider(name = "TestData") 
public Object [][] getData() { Object [][] 
data=new Object[2][2]; 
data[0][0]="url1"; 
data[0][1]="client1"; 
data[1][0]="url2"; 
data[1][1]="client2"; 
return data; 
} 

@Test(dataProvider = "TestData",priority =0) 
public void RI_Select_an_Employer_page(String url,String client) throws Exception { 
driver.get(url); 
} 
@Test(dataProvider = "TestData",priority =1) 
    public void RI_Employer_Information_page(String url,String client) {
    WebElement  linkclient = driver.findElement(By.linkText(client));
    linkclient.click();
  @AfterMethod
          public void tearDown(ITestResult result) {
        }
  @AfterSuite
  public void tearDown() {
  driver.quit();
  }
ベストアンサー

TestNgのような専用のテストフレームワークを使用する場合は、whileループを使用してテストにテストデータを渡すべきではありません。

代わりに、そのようなフレームワークによって提供されるメカニズムを使用する必要があります。
TestNgでは、テストデータをxmlファイルで提供することも、実行ごとにテストデータを提供する特別な方法を提供することもできます。

Details: http://testng.org/doc/documentation-main.html#parameters

たとえば、テストにexcelのテストデータを入力したい場合は、次のようなコードを実装する必要があります(ドキュメントのコードから少し変更されたコード)。

@DataProvider(name = "test1")
public Object[][] createData1() {

    int n = 0;//Load the number of the excel file rows later here
    int k = 0;//Load the number of parameter later here

   //Read your excel file. Assign the corresponding values to n and k

    Object[][] testData = new Object[n][k];

   //Fill testData with values from excel

    return testData;

}

次に、テストメソッドを次のように記述します。

@Test(dataProvider = "test1")
public void verifyData1(Object[] params) {
   //Here you use params[0], params[1], .. to take 
   //new set of parameters for each new run of your test.
   //testNg will automatically run your single test for
   //one time for EACH test data entry
}

TestNgのドキュメントをよく読んで、テストをより効果的にするために使用できる他の興味深いものが何であるかを知ることをお勧めします。

UPD: I have tested the code from your question
and it works fine for me:

enter image description here

返信を残す

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