複数のテストケースを実行する TestNG スイート Selenium
TestNG プロジェクト内でテスト メソッド、テスト クラス、テスト ケースを並行して実行できます。並行実行を行うことで、異なるスレッドで同時にテストが開始され実行されるため、「実行時間」を短縮できます。
ここでは、を使用して複数のクラス (別名異なるスイート) を実行する方法を見ていきます。 TestNG.
ステップ 1) TestNGテストを実行するための .xml ファイル
これを行うには、以下の手順に従います。
- Eclipseで新しいプロジェクトを作成する
- プロジェクトに 1 つのパッケージを作成します (com.suite2 と com.suiteXNUMX という名前を付けます)。
- 各パッケージにクラスを作成し (Flipkart.java および Snapdeal.java という名前を付けます)、それぞれのクラスに以下のコードをコピーします。
- プロジェクトに新しいファイルを作成し、testng.xmlという名前を付けます(Eclipseのテストプラグインがインストールされていることを確認してください。手順は こちらをご覧いただくか、)。Testng.xml には、すべての構成 (クラス名、テスト名、スーツ名) が含まれます。
フリップカート.java
package com.suite1;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class Flipkart{
WebDriver driver = new FirefoxDriver();
String username = ""; // Change to your username and passwrod
String password = "";
// This method is to navigate flipkart URL
@BeforeClass
public void init() {
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.navigate().to("https://www.flipkart.com");
}
// To log in flipkart
@Test
public void login() {
driver.findElement(By.partialLinkText("Login")).click();
driver.findElement(
By.cssSelector(".fk-input.login-form-input.user-email"))
.sendKeys(username);
driver.findElement(
By.cssSelector(".fk-input.login-form-input.user-pwd"))
.sendKeys(password);
driver.findElement(By.cssSelector(".submit-btn.login-btn.btn")).click();
}
// Search For product
@Test
public void searchAndSelectProduct() {
driver.findElement(By.id("fk-top-search-box")).sendKeys("moto g3");
driver.findElement(
By.cssSelector("search-bar-submit.fk-font-13.fk-font-bold"))
.click();
// select the first item in the search results
String css = ".gd-row.browse-grid-row:nth-of-type(1) > div:nth-child(1)>div>div:nth-child(2)>div>a";
driver.findElement(By.cssSelector(css)).click();
}
@Test
public void buyAndRemoveFromCart() {
driver.findElement(
By.cssSelector(".btn-express-checkout.btn-big.current"))
.click();
driver.findElement(By.cssSelector(".remove.fk-inline-block")).click();
Alert a = driver.switchTo().alert();
a.accept();
}
@Test
public void logout() {
Actions s = new Actions(driver);
WebElement user = driver.findElement(By.partialLinkText(username));
s.moveToElement(user).build().perform();
driver.findElement(By.linkText("Logout")).click();
}
@AfterClass
public void quit() {
driver.close();
}
}
スナップディール.java
package com.suite2;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SnapDeal {
WebDriver driver = new FirefoxDriver();
String username = ""; // Change to your username and passwrod
String password = "";
String pinCode = "";
// This method is to navigate snapdeal URL
@BeforeClass
public void init() {
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.navigate().to("https://www.snapdeal.com");
}
// To log in flipkart
@Test
public void login() {
driver.findElement(By.xpath("//button[text()='Login']")).click();
driver.switchTo().frame("loginIframe");
driver.findElement(By.cssSelector("div[onClick='getLoginForm()']"))
.click();
driver.findElement(By.id("j_username")).sendKeys(username);
driver.findElement(By.id("j_password_login")).sendKeys(password);
driver.findElement(By.id("signin_submit")).click();
driver.switchTo().defaultContent();
}
// Search For product
@Test
public void searchAndSelectProduct() {
driver.findElement(By.cssSelector(".col-xs-20.searchformInput.keyword"))
.sendKeys("iphone 6s");
driver.findElement(By.cssSelector(".sd-icon.sd-icon-search")).click();
// select the first item in the search results
String css = ".product_grid_row:nth-of-type(1)>div:nth-child(1)";
driver.findElement(By.cssSelector(css)).click();
}
@Test
public void buyAndRemoveFromCart() {
driver.findElement(By.xpath("//li[contains(text(),'Silver')]")).click();
driver.findElement(By.id("pincode-check")).sendKeys(pinCode);
driver.findElement(By.id("buy-button-id")).click();
driver.findElement(By.cssSelector("i[title='Delete Item']")).click();
Alert a = driver.switchTo().alert();
a.accept();
}
@Test
public void logout() {
driver.findElement(By.linkText("START SHOPPING NOW")).click();
Actions s = new Actions(driver);
WebElement user = driver.findElement(By.cssSelector(".sd-icon.sd-icon-user"));
s.moveToElement(user).build().perform();
driver.findElement(By.linkText("Logout")).click();
}
@AfterClass
public void quit() {
driver.close();
}
}
テストNg.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" verbose="1" name="Gmail Suite" annotations="JDK" parallel="tests">
<test name="flipkart">
<classes>
<class name="com.suite1.Flipkart"/>
</classes>
</test>
<test name="Myntra">
<classes>
<class name="com.suite2.SnapDeal"/>
</classes>
</test>
</suite>
最終的なプロジェクト構造は以下のようになります。
ステップ 2) での並列実行 TestNG
上記のように XML ファイルを作成したら、次のステップで並列テストを実行します。 以下はコードです。
1) スレッド数: これは、数値スクリプトに基づいて並列実行に使用されます。 並列または順次に実行されます。
2) 冗長: コンソールに実行の詳細を記録するために使用されます。値は 1 ~ 10 にする必要があります。testng.xml 構成ファイルの verbose 属性の値を増やすと、コンソール ウィンドウのログの詳細がより詳細かつ明確になります。
3) 名前: スイートの名前。ここでは「Gmail Suite」です。
4) パラレル: スクリプトを並列実行するには、値をテスト/クラス/メソッド/スイートにすることができます。 デフォルト値は なし
testng.xmlを右クリックしてテストとして実行を選択すると、成功するとすべての結果が表示されます。
上記のコードを実行すると、次の出力が得られます。
出力:
1) testng.xmlで指定されたスイートの名前
2) testng.xmlで指定されたテストの名前
3) testng.xmlで指定されたクラスの名前
4) .java ファイル内の @Test アノテーションが付けられたメソッド名
同様に、スナップ ディールのテスト スイートも実行します。
結論
上記の例で使用方法を見てきました。 テスト 並列テストを実行します。 TestNG 単一の構成ファイル (XML) で複数のテストを並行して実行するオプションを提供します。




