以前のメソッドを呼び出すことによって、値を格納し、それを返し、別のテストケースで検証することは可能ですか?

私は次のような方法を作りました:

@Test(priority = 61)
public void Schedule_Valid_Promocode_Discount() throws InterruptedException
{
    WebElement Discount = driver.findElement(By.xpath("html/body/max-app-root/max-schedule/div/div[2]/max-campaign-information/div/aside/div[2]/div[3]/div/div[3]/div[2]/h4"));
    Assert.assertTrue(Discount!=null);//Check if discount appeared
    Assert.assertEquals("RM 1,000", Discount.getText());
}
public WebElement getSchedule_Discount_Amount() throws InterruptedException
{
    WebElement Discount = driver.findElement(By.xpath("html/body/max-app-root/max-schedule/div/div[2]/max-campaign-information/div/aside/div[2]/div[3]/div/div[3]/div[2]/h4"));
    return Discount;
}

私は次のテストケースで同じ値をテストできるようにこの値を保存しようとしています。テストケースは次のとおりです。

@Test(priority = 79)
public void BillingDetail_InvoiceTab_DiscountAmount() throws InterruptedException
{
    //Check Discount amount on billing detail page
    WebElement InvoiceDiscount = driver.findElement(By.xpath("html/body/max-app-root/max-summary/div/div/div[2]/div/div/mat-card/mat-card-content/div[1]/div[1]/div/p[2]/span"));
    WebElement Discount = this.getSchedule_Discount_Amount();
    Assert.assertEquals(Discount.getText(), InvoiceDiscount.getText());
}

this.getSchedule_Discount_Amount();
をコールしようとすると、エラーが発生します。要素を見つけることができません。

私はクラスが1つしかなく、すべてのテストケースが同じクラスに属します。私は自動化テストの初心者で、新しいクラスをどのようなシーンに作成するかについてはわかりません。

ベストアンサー

まず、Web上にある多くの基本的なJavaチュートリアルの作業を開始することを強くお勧めします。その要素が2番目のテストで使用している請求書ページとは別のページにあるため、割引要素が使用できなくなっていることは間違いありません。

いくつかの基本的なプログラミング知識では、クラスレベルで変数を宣言してから、テスト61に要素の値を格納して、それ以降のすべてのテストでアクセスできるようにする必要があることがわかります。

これはこのシナリオを処理する最善の方法ではありません。テスト間に依存関係が作成されます。つまり、テスト61が失敗すると、テスト79も失敗します。

あなたがこれを行う能力を持っているなら、より良い選択は、テスト79のための既知の良い既存の請求書を使うか、テスト79がそれ自身の請求書のためにすべての設定をするかです。

擬似コードは以下の通りです:

@Test(priority = 61)
public void Schedule_Valid_Promocode_Discount() throws InterruptedException
{
    NavigateToPage(pageUrl); //this is handled in a separate utility class
    string DiscountAmount = driver.findElement().getText();//use id if the field has it, otherwise use the shortest path you can. Do not use absolute XPath because that will break every time the page layout changes.
    Assert.assertEquals("RM 1,000", DiscountAmount);//you only want one assert per test for clarity.
}

// other tests go here...

@Test(priority = 79)
public void BillingDetail_InvoiceTab_DiscountAmount() throws InterruptedException
{
    //Check Discount amount on billing detail page
    NavigateToPage(orderListPage); //remember the separate class?
    OpenInvoice(knownInvoiceNumber);//this should open the invoice page
    string InvoiceDiscount = driver.findElement().getText(); //again, use id if the field has it.
    Assert.assertEquals(expectedAmountText, InvoiceDiscount);
}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です