有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数据提供者和断言

在TestNG上使用DataProviders时,我的测试方法断言将失败,因为传入的数据导航到不同的url。是否有办法解决这一问题,即数据仅注入某些/特定资产


我不是用不同的数据测试一个场景,而是用不同的数据测试多个场景,这就是我的冲突产生的地方


@DataProvider(name = "VINNumbers")
public String[][] VINNumbers() {
    return new String[][] {
            {"2T1BU4ECC834670"},
            {"1GKS2JKJR543989"},
            {"2FTDF0820A04457"}
    };
}

@Test(dataProvider = "VINNumbers")
public void shouldNavigateToCorrespondingVinEnteredIn(String VIN) {
    driver.get(findYourCarPage.getURL() + VIN);
    Assert.assertTrue(reactSRP.dealerListingMSRPIsDisplayed());
}

断言测试页面是否显示MSRP,但并非所有数据提供程序都显示MSRP,因此它将失败。唯一拥有它的数据提供程序是第一个数组。有没有一种方法可以让数据提供者调用特定的断言


共 (1) 个答案

  1. # 1 楼答案

    如果取决于VIN,是否显示MSRP(布尔值),例如,您可以按照提供VIN和预期结果的方式创建提供商:

    @Test(dataProvider = "VINNumbers")
    public void shouldNavigateToCorrespondingVinEnteredIn(String VIN, boolean isMSRPDisplayed) {
        // act
        // assert
        assertThat(reactSRP.dealerListingMSRPIsDisplayed()).is(isMSRPDisplayed);
    }
    

    这样,您就可以得到如下提供商:

    {
        {"2T1BU4ECC834670", true},
        {"1GKS2JKJR543989", false},
        {"2FTDF0820A04457", true},
    }
    

    在我看来,这对于简单的情况是可以接受的。为了使断言更具可读性,我将向其添加一条自定义消息,该消息也被参数化

    我希望这有帮助