簡體   English   中英

Selenium Web驅動程序-Java-TestNG-Assert.assertEquals如何將實際結果與預期結果之間的范圍進行比較

[英]Selenium Web Driver - Java - TestNG - Assert.assertEquals how to compare actual result with the range between expected result

我有一個測試方案,其中實際結果是固定百分比,例如135.68%,但我想將實際結果與預期結果進行比較,例如范圍在130.00到136.00之間。 如果實際結果在130.00到136.00之間,則測試通過,否則測試失敗。

我正在使用以下Assert語句,但沒有運氣:

  import java.awt.Robot;
    import java.awt.event.KeyEvent;
    import java.io.File;
    import java.io.FileInputStream;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import jxl.Sheet;
    import jxl.Workbook;
    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.By;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.ui.Select;
    import org.testng.Assert;
    import org.testng.annotations.Test;
    import org.testng.asserts.Assertion;
    import org.testng.asserts.SoftAssert;


    @Test
    public class TC20042 extends BaseClass{

        private SoftAssert m_assert = new SoftAssert();


          public void registration() throws Exception, InterruptedException {
                  FileInputStream fi=new FileInputStream("C:\\File\\Book2.xls");
                  Workbook w=Workbook.getWorkbook(fi);
                  Sheet s=w.getSheet(2);


                try
                {
                for (int i = 0; i < s.getRows(); i++)
                {
                //Read data from excel sheet
                    String s1 = s.getCell(0,i).getContents();

    String xPath = "//*[@id='mainForm']/div/div[3]/div/div/table/tbody/tr[1]/td[6]";
                    String text = driver.findElement(By.xpath(xPath)).getText();
                    double percentage = Double.parseDouble(text);

                    assertThat(percentage).isBetween(130.0, 136.0);

private Object assertThat(double percentage) {
            // TODO Auto-generated method stub
            return null;
        }   



    }

                }
                catch(Exception e)
                {
                System.out.println(e);

                }
                }

    }

只需解析並檢查:

    String expectedPercentage = driver.findElement(By.xpath("//*[@id='app-banner']/div[1]/div/h2")).getText().replace("%", "");
    double percentage = Double.parseDouble(expectedPercentage);

    // Do this parsing if range is in string format. Otherwise skip this block
    String range = "130.00 to 136.00";
    String[] numbers = range.replaceAll(" ", "").split("to");        
    double min = Double.parseDouble(numbers[0]);
    double max = Double.parseDouble(numbers[1]);

    Assert.assertTrue(expectedPercentage + " is not between the range", min <= percentage && percentage <= max);

解析文本並聲明結果:

String xPath = "//*[@id='app-banner']/div[1]/div/h2";
String text = driver.findElement(By.xpath(xPath)).getText();
double percentage = Double.parseDouble(text.replace("%", ""));

assertThat(percentage).isBetween(130.0, 136.0);

此解決方案使用來自AssertJ的 isBetween(Double, Double)作為靜態導入 另外,您可以使用我在comment中提到的TestNG斷言。

public static void assertEquals(double actual,
                                double expected,
                                double delta,
                                java.lang.String message)
Asserts that two floats are equal concerning a delta. If they are not, an AssertionError, with the given message, is thrown. If the expected value is infinity then the delta value is ignored.

assertEquals(133.00,expected,3.00,"ERROR")

我使用常規的testNg Assert,對我來說如下所示:

String xPath = "//*[@id='mainForm']/div/div[3]/div/div/table/tbody/tr[1]/td[6]";
                String text = driver.findElement(By.xpath(xPath)).getText();
                text  = text.replace("%", "");
                double percentage = Double.parseDouble(text);   

                Assert.assertTrue(percentage > 130.67 && percentage < 135.69);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM