2

何かが可能かどうか (または、少しばかげているかどうか) を把握しようとしています。

非常に単純な Excel シートがあります。2 列、1 列は検索語のリスト、2 列目は予想される URL のリストです。これをセレン経由で実行すると、Googleに移動し、Excelシートを開き、用語を検索し、期待される結果が表示されたらテストに合格します. シートの 3 つの行に対してこれを行います。すべて良い。ただし、各行を @Test することを望んでいましたが、これを達成する方法がわかりません。

以下はテスト コードです。私が言ったように、これを機能させることはできません。現在は実行されますが、3 つの異なる検索が行われた単一のテストとして表示されます。

@Test
@Severity(SeverityLevel.CRITICAL)
public void driveDatData() throws InterruptedException, BiffException, IOException {
    parameters = WebDriverSteps.currentDriver.toString();
    steps.openWebPage("http://www.google.co.uk");

    FileInputStream fi = new FileInputStream("C:\\temp\\sites.xls");
    Workbook w = Workbook.getWorkbook(fi);
    Sheet s = w.getSheet("Sheet1");

    for (int i=1;i<=s.getRows(); i++) 
    {
        if (i > 1) 
        {
            steps.goToURL("http://www.google.co.uk");
        }

        steps.search(s.getCell("A" + i).getContents());
        Assert.assertTrue("Check the " + s.getCell("A" + i).getContents() + " link is present", steps.checkForTextPresent(s.getCell("B" + i).getContents()));
    }

}
4

4 に答える 4

0

いくつかのこと:

テスト データを外部の Excel シートに保存することは理にかなっていると思いますか? それ以外の場合、より一般的なアプローチは、テスト データをプロジェクト内にテスト リソースとして保持することです。また、Excel ファイルからテスト データを取得するのに役立つさまざまなフレームワークがあると思います。

これを言った:

テスト データを のデータ構造に取り込むようにコードを変更し、さまざまなことをテストするさまざまな を@Before記述します。@Testこれにより、テスト データの取得が実際のテストから分離されます (これは、保守性と責任の点で優れています)。ファイルの読み取り/パフォーマンスが問題になる場合は、@BeforeClassこれをテスト クラスごとに 1 回だけ実行することをお勧めします。

@Before
// read file, store information into myTestData

@Test
// tests against myTestData.getX

@Test
// tests against myTestData.getY
于 2015-03-19T20:38:38.950 に答える
0

少し努力した後、@RunWith を使用して JUnit でこれを機能させることができました。私が望んでいたものとはまったく異なりますが、JUnitでこれを理解するのに十分な洞察を与えてくれるいくつかの例を見つけました。

于 2015-03-24T06:00:38.873 に答える
0

プロジェクトにFeed4JUnitを追加することをお勧めします。これは高度に構成可能であり、Excel をサポートしてすぐにパラメーター化された JUnit および TestNG テストを実行できる唯一のライブラリです。

Feed4Junit

@RunWith(Feeder.class)
public class AddTest {

    @Test
    @Source("http://buildserv.mycompany.com/wiki/myproject/tests/add.xls")
    public void testAdd(int param1, int param2, int expectedResult) {
        int result = MyUtil.add(param1, param2);
        assert result == expectedResult;
    }
}

この例は、Feed4Junit サイトから直接取得されます。

パラメータは左から右に読み取られることに注意してください。

各行はテストであり、各列に有効な値が含まれている必要があります。つまり、列が 3 行で同じ値である場合は、各行に表示される必要があります。

于 2015-03-23T03:56:06.833 に答える