1

私は、2つのレイヤーがあるPageObjectパターンに従って、Selenium Webdriverを使用して自動化フレームワークを開発中です。

  • テストクラス (テスト仕様)
  • PageObject クラス (テスト実装)

私のテスト クラスには、PageObject クラスのオブジェクトを作成し、実際に AUT とやり取りするこれらのクラスのメソッドを呼び出すTestNG 注釈メソッド ( 、 など) が含まれ@Testています。@BeforeTest@AfterTest

テストにデータを渡す方法は、次を含めることです。

  • アプリケーション内の要素のすべてのロケーター (css/xpath/class/id ロケーター)。
  • 必要なすべてのテストデータ

プロパティ ファイル (例: testDataSet1.properties)。プロパティ ファイルを作成HashMap<String, String>し、ハッシュマップからデータを読み取ってスクリプトで使用するすべてのページ オブジェクトにパラメーターとして渡します。テストクラスからテストデータをまったく渡していません。

What my problem is, I am not sure whether it is appropriate to read test-data in PageObjects. I get a feeling that this approach is very inflexible because I am tying test data to PageObjects instead of tying it to the tests. So when I need to perform data-driven tests / run the automation suite in multiple iterations, this will not work. Because, currently if I need to use different data each time I need to manually go and change the key specified in the hashmap which will fetch me a different value from the properties file.

Any suggestions?

4

1 に答える 1

3

個人的には、ページ オブジェクトを Web ページ自体として機能させ、実行するアクションと使用する検証メソッドを提供するのが好きです。たとえば、CSS、ID などのすべてのセレクターをページ オブジェクト自体に保持します。このように、テストを中断する Web ページの更新があった場合、その Web ページに対応するページ オブジェクトに移動し、そこでセレクターを更新するだけです。

テストデータに関しては、テストデータをプルするために使用する他のファイル (クラス、プロパティなど) がいくつかあります。テスト ユーザー。テスト クラス自体がこのテスト データを取得し、それをページ オブジェクト (必要な場合) または検証目的でページ オブジェクト メソッドに渡します。

テストデータクラスの例 (私のものはもう少し複雑ですが、これは単純な例です):

public TestUser(){
    username = getUniqueUser();
    password = ""; 
    name = "Test User";
    email = getUniqueEmail(username);
}

tl;dr;

  • それぞれのページ オブジェクトに html セレクターを保持します (必要に応じてサブページ オブジェクトを再利用できます)。
  • クラス、プロパティ ファイル、およびテスト クラスの間でテスト データを混在させます。
于 2013-03-28T14:49:45.387 に答える