2

TestNG の DataProvider 機能を使用してテスト スクリプトを作成しています。渡すパラメータの数が 10 未満だったので、これまでは自分のやり方に満足していましたが、テストしている新しいページの一部には 30 ~ 35 を超えるパラメータがあり、これらのパラメータをテスト メソッドに追加すると、見栄えが悪いので、varArgs 'Object...' を使い始めました。

パラメータを動的に渡す良い方法ですが、多くのメソッドに対してこれを行う必要がある場合、インデックスに細心の注意を払う必要があり、エラーが発生しやすいため、それらを使用するのは困難です。

テスト データを ArrayList> として渡そうとしました。ここで、HashMap は列の名前と値のペアですが、HashMap を Object[] としてキャストできないため、TestNG はこれを受け入れません。私が HashMap を使用することを考えた理由は、キーをクエリしてその値を取得でき、そのキーを知っているからです。値を取得し、それをページ上のフィールドの名前を表す変数に割り当てる一般的なメソッドを作成することもできました。

データ ソース (XLS) は、ページに入力されたテスト データのみを格納するため、キーワード ベースではなく純粋にデータ駆動型です。私がテストしているページはすべてデータ入力ページです。

テストデータにある種のアイデンティティを持たせ、TestNGにそれを受け入れさせる最良の方法は何ですか.

この点で何か助けていただければ幸いです。

ありがとう、ジョン

4

2 に答える 2

2

Map をテスト メソッドの引数として使用し、データ プロバイダが各データ セットのマップのみで構成される引数配列を返すようにしない理由は次のとおりです。

public class MyTest {

  @Test(...)
  public void testThis(Map<String,Object> args) {
    String arg1 = (String) args1.get("args1");
    ...
  }

  @Dataprovider(...)
  public Object[][] dataprovider() {
    return new Object[][]{
      { map("arg1", "foo") },
      { map("arg1", "bar", "arg2", new Object() }
    };
  }

  private Map<String,Object> map(Object... kv) {
    //helper that creates Map from Array for brevity.
  }

}

これにより、パラメーターの受け渡しという名前の他の言語をエミュレートすることで、可変引数の使用が容易になります。

于 2013-01-04T05:34:28.787 に答える
1

MapをObject[]に変換する独自の変換関数を作成して、TestNGメソッドに渡すことができますか?

于 2013-01-03T20:32:46.453 に答える