learn how use testng annotations selenium
ほとんどの人が知っているように、TestNGは自動化です Seleniumで広く使用されているフレームワーク 。すべてのテスターが、TestNGの操作中に使用される注釈を理解することが重要です。
簡単に言うと、TestNGアノテーションは、以下のメソッドの実行方法を制御するためにプログラム/ビジネスロジックに挿入されるコード行です。
この記事では、さまざまな種類の注釈の重要性とその使用法に焦点を当てます。
以下に、私のプロジェクトで使用したセットアップを共有しました。これは、プロジェクトで必ずしも従う必要はありません。
注釈は、プロジェクトの要件によって異なります。ただし、実行の流れは同じです。
前提条件:
- TestNGをEclipseにインストールします。小切手 インストールガイドに関するこのチュートリアル 。
- JDK – Java開発キット
- アノテーションは、Java1.5バージョン以降でのみ使用できます。
テストスクリプトを作成したりプロジェクトを設定したりする前に、アノテーションが機能する階層を知っておく必要があります。実行は常に同じままです。
例えば、以下のスクリプトをコンパイルして実行し、実行順序を確認します。次のようになります。
- BeforeSuite
- BeforeTest
- BeforeClass
- BeforeMethod
- テストケース1
- AfterMethod
- BeforeMethod
- テストケース2
- AfterMethod
- 放課後
- AfterTest
- AfterSuite
例:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } } テストスクリプトプロセスは、次の手順に分けることができます。
- テストのビジネスロジックを記述し、上に挿入します TestNGアノテーション あなたのコードで
- テストに関する情報(クラス名、グループ、実行するメソッドなど)をに追加します。 testng.xml ファイル。
- TestNGを実行する
しかし、疑問は残ります–上記の注釈でどのような情報を提供する必要がありますか?
上記の注釈を使用して達成できる重要な手順を見てください。
#1) @テスト
これは、自動化スクリプトの主要部分であり、自動化するビジネスロジックを記述します。テストメソッドに属性を渡すことができます。
以下は、Testメソッドに渡すことができる属性のリストです。
- alwaysRun :これは、メソッドが依存するパラメーターが失敗した場合でも、メソッドが常に実行されるようにする場合に使用されます。 trueに設定すると、このテストメソッドは常に実行されます。例えば: @Test(alwaysRun = true)
- dataProvider :TestNG dataProviderは、パラメーター化のためのデータを提供するために使用されます。例えば。 @Test(dataProvider =“ Hello”)。
- dataProviderClass :これは、データをデータプロバイダーに渡す場所からのクラスです。この場合、dataProviderクラス名は「Hello」です。
- dependsOnGroups :このメソッドが依存するグループのリストです。例えば: @Test(groups = {“ City”、” State”})
- dependsOnMethods: このコマンドは、依存するメソッドに基づいてメソッドを実行するために使用されます。例えば: @Test(dependsOnMethods = {“ OpenBrowser”、”データベースが稼働しています”})
- 説明 :メソッドの説明です。例えば: @Test(description =“ test method”)
- invocationCount :メソッドを呼び出す必要がある回数を指します。ループとして機能します。例えば: @Test(invocationCount = 7) 。したがって、このメソッドは7回実行されます。
- invocationTimeOut :これは、メソッドがすべてのinvocationCountを完了するために必要な最大ミリ秒数を指します。 invocationCountが指定されていない場合、この属性は無視されます。例えば: @Test(invocationCount = 7、invocationTimeOut = 30)
- 優先度 :このコマンドは、テストメソッドの優先度を設定します。優先度の低いものが最初にスケジュールされます。例えば: @Test(priority = 1)
#二)@BeforeSuiteおよび@AfterSuite
に @BeforeSuite 注釈付きのメソッド、セットアップして開始できます セレン ドライバーと @AfterSuite 注釈付きのメソッド、Seleniumドライバーを停止できます
例 :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } } #3)@BeforeClassと@AfterClass
に @BeforeClass 注釈付きのメソッドでは、Firefoxのプロパティを設定したり、ドライバーを初期化したりすることができます。 @放課後 注釈付きのメソッド、ドライバーを停止できます
例 :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); } #4)@BeforeMethodおよび@AfterMethod
に @BeforeMethod 注釈付きメソッド。テストメソッドを実行する前に、データベース接続を確認できます。 @AfterMethod 注釈付きのメソッド、データベース接続を閉じることができます
例 :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); } @AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); } #5)@BeforeTestおよび@AfterTest
に @BeforTest メソッドでは、Firefoxプロファイルの設定を行うことができます @AfterTest メソッドでは、テスト結果を生成して利害関係者に郵送するコードを入力できます
例 :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report } アノテーションを操作する際にここで注意する必要がある最も重要な側面は、システムにJava 1.5バージョン以降が装備されている必要があることです。そうしないと、Eclipseがシステムでアノテーションがサポートされていないというエラーを表示する場合があります。
ここで、システムにアノテーションに必要な適切なバージョンのJavaがあり、それでもエラーが表示される場合を考えてみます。
以下のようなもの:
構文エラー、注釈はソースレベルが1.5以上の場合にのみ使用できます。
あなたは今何をしますか?がある この状況を修正するための3つのオプション。
それを1つずつ見ていきましょう。
オプション1:
- Eclipseに移動し、プロジェクトを右クリックします
- プロパティを選択します
- Javaコンパイラをクリックします
- コンパイラのコンプライアンスレベルが1.5以上であることを確認してください
- 設定を保存すると、問題は解決します
オプション#2:
- Eclipseの(ウィンドウ)タブに移動します
- (設定)を選択します
- Javaをクリックしてからコンパイラをクリックします
- コンパイラのコンプライアンスレベルが1.5以上であることを確認してください
- 設定を保存すると、問題は解決します
オプション#3:
正しいJava環境パス変数を設定して、Javaホームパスを確認してください。
結論:
この記事では、テスターが頻繁に使用する重要なアノテーションと属性のいくつかについて説明しました。ただし、TestNGには、あまり使用されない注釈があります。 @ AfterGroups、@ BeforeGroups プロジェクトテストスクリプトでグループを操作するときに使用されるなど。
したがって、要件に応じて上記の注釈を使用してください。テストメソッドでプロジェクトのセットアップを行わないことを常にお勧めします。テスト方法では、テストするコアビジネスロジックを記述します。
ネットワークセキュリティキーの不一致とは
システムにJava1.5バージョン以降が装備されていることを確認してください。装備されていない場合、Eclipseは、システムでアノテーションがサポートされていないというエラーを表示する場合があります。
この記事がTestNGアノテーションに役立つことを願っています。ご意見やご質問がございましたら、お気軽にお問い合わせください。
推奨読書
- Seleniumスクリプトを作成するためのTestNGフレームワークの使用方法-TestNGSeleniumチュートリアル#12
- Seleniumは例を含むテキストチュートリアルで要素を検索します
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- 効率的なSeleniumスクリプティングとトラブルシューティングシナリオ– Seleniumチュートリアル#27
- ログを使用したSeleniumスクリプトのデバッグ(Log4jチュートリアル)– Seleniumチュートリアル#26
- 例を含むPythonDateTimeチュートリアル