3

バックグラウンド:

以下を含む基本的な遊び場プロジェクトを作成しました。

  1. 以下を含むtestLogin.javaファイル:
    a。testngパッケージのインポート(org.testng。*)
    b。セレンWebドライバーのインポート(org.openqa.selenium。*)
    c。testngアノテーションを使用した5つのテストメソッド:
  1. @Test(groups = {"init"})public void openURL()
    Webドライバーを開始し、指定されたURLでchromeインスタンスを開くためのWebドライバーコードが含まれています。

  2. @Test(dependsOnGroups = {"init"})public void testLogin()次の
    Webドライバーコードが含まれています。1
    。ユーザー名パスワードのテキスト入力要素を見つけ、プロパティファイルからユーザー名パスワードを入力します。
    2. [ログイン]ボタンを見つけ、ボタンをクリックして
    ログインします。3.他の誰かがすでに資格情報を使用してログインしている場合は、ログインを強制的にシナリオを管理します。

  3. @Test(dependsOnMethods = {"testLogin"})public void testPatientsScheduleList()
    患者がスケジュールされているかどうかを確認するためのWebドライバーコードが含まれています。はいの場合は、名前を取得してコンソールに表示します。

  4. @Test()public void testLogout()
    ログアウトボタンを見つけてボタンをクリックしてアプリからログアウトするためのWebドライバーコードが含まれています。

  5. @AfterTest()public void closeConnection()
    webdriverオブジェクトを破棄してchromeインスタンスを閉じるためのwebdriverコードが含まれています。

現在、ANTからtestngメソッドとしてラップされたテストスクリプトを実行しているだけで、testng-xsltレポートが生成されます。

問題:

1.テストメソッドでwebdriverスクリプトのコードのすべての行に対して検証を実行します。

私は知っています:
1。Selenium Webdriverスクリプトには、実行するデフォルトのアサーション/検証の結果として例外をスローするAPIメソッド(findElement()など)が含まれています。これらの例外は、テストメソッドが失敗したときに生成されたレポートに表示されます。
2. TestNGは多くのアサーションメソッドを持つAssertクラスを提供しますが、それらを使用してWebドライバースクリプトのコードのすべての行に対して検証/アサーションを実行する方法をまだ理解していません。Webdriverスクリプトコードのすべての行の後にアサーションメソッドを追加してみました。出力に表示されたのは、testmethodの単なるAssertionError例外でした。

2. try..catchブロックが原因で合格した特定のテストメソッドに失敗しました。
2つ以上のテストドライブスクリプトステップのセットの周りでtrycatchブロックを使用し、テストケースがいずれかのステップ(スクリプト行)で失敗した場合、try..catchブロックがそれを処理し、テストメソッドを表示します実行レポートで「合格」として、実際には失敗しました。

3.スタックトレースではなく、目的のテスト実行結果を表示するカスタムレポートを作成します。
上記のスクリプトを実行すると、テストスイート(testng.xmlで構成)の各テストメソッドの合格/不合格ステータスを含むtestng-xsltレポートが生成されます。テスト結果は、テストメソッドが成功したか失敗したかを示すだけであり、実際には有用な情報を提供しない例外のスタックトレースを提供します。このような抽象的なレベルのテスト実行結果は必要ありませんが、次のようなものが必要です。

名前| 開始| 期間| 何が本当に間違っていたのか(失敗)


誰かが以下に関するいくつかの指針を提案/与えることができますか?
1。スクリプト行ごとにassertを記述せずに、テストメソッドでwebdriverスクリプトのコードのすべての行に対して検証/アサーションを実行するにはどうすればよいですか?
2. try catchブロックが原因で合格した特定のテストメソッドに失敗するにはどうすればよいですか?
3.障害レポートをカスタマイズして、「期待される要素「ボタン」のIDが「bnt12」であるが、test-methodのステップ3で要素が見つからなかった」などの障害結果をtestngのレポートユーティリティに送信するにはどうすればよいですか。
4.4。testng-xsltレポートで、テストメソッドのどこで障害が発生したかを正確に表示したいと思います。したがって、たとえば、テストメソッドの3行目でwebelement = driver.findElement()が原因でテストメソッドが失敗した場合、この問題を「What-really-went-wrong」のテストレポートに表示します。桁。testng testlisteners TestListenerAdapter / ITestListener / IReporterについて読みましたが、testngのjavadocsを確認した後の使用方法がわかりません。
5.また、テストレポートのカスタマイズが完了したら、PageObjectパターンを実装する必要があります。ページオブジェクトパターンでアサーションを実行するのに適切な場所はどこですか?アサーションは、ページオブジェクトのテストメソッドで作成する必要がありますか、それともPageObjectクラスを使用する高レベルのテストメソッドで作成する必要がありますか?

PS:私はtestngフレームワークとwebdriverスクリプトにまったく慣れていません。投稿に技術的な間違いや観察の誤りがある場合は、ご容赦ください。

4

2 に答える 2

2

各スクリプト行の後にアサートを記述せずに、テストメソッドの webdriver スクリプトのすべてのコード行に対して検証/アサーションを実行するにはどうすればよいですか?

私はそうは思わない。比較を行うのはアサーションです。だからあなたはそれが必要です。

try catch ブロックが原因で渡された特定のテスト メソッドを失敗させるにはどうすればよいですか?

try-catch はアサーションの失敗をマスクします (アサーションの失敗時にアサーション例外がスローされるため、catch ブロックが ( catch(Exception e)) のような場合、アサーションの失敗は catch ブロックをエスケープしません。

「id "bnt12" の要素 "button" が予期されるが、test-method のステップ 3 で要素が見つからない」などの失敗結果を testng のレポート ユーティリティに送信できるように、失敗レポートをカスタマイズするにはどうすればよいですか?

テスト リスナーを使用する必要があります。TestNG TestListenerAdapter は良いスタートです

また、テスト レポートのカスタマイズが完了したら、PageObject パターンを実装する必要があります。ページ オブジェクト パターンでアサーションを実行する適切な場所はどこでしょうか? アサーションは、ページ オブジェクトのテスト メソッドに記述する必要がありますか?それとも、PageObject クラスを使用するより高いレベルのテスト メソッドに記述する必要がありますか?

私の個人的な選択は、テスト メソッドでアサーションを使用することです。これは、実際のテストを行っている場所であるためです。ページ オブジェクトには、Web ページ内を移動するためのスクリプトが含まれています。

于 2014-06-23T11:35:44.727 に答える