java - 数据提供者和断言

标签 java selenium testng

在 TestNG 上使用 DataProviders 时,我的测试方法断言将会失败,因为传入的数据导航到不同的 url。有没有办法解决这个问题,即数据仅注入(inject)到某些/特定断言的方法?

<小时/>

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

<小时/>
@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,但并不是所有的dataproviders都会显示MSRP,所以会失败。唯一拥有它的数据提供者是第一个数组。有没有办法让数据提供者被调用到特定的断言?

最佳答案

如果根据 VIN,建议零售价是否显示( boolean 值),您可以按照提供 VIN 和预期结果的方式创建一个提供商:

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

这样您最终会得到如下所示的提供商:

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

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

我希望这会有所帮助。

关于java - 数据提供者和断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210486/

相关文章:

java - 如何使 org.apache.cxf.interceptor.LoggingInInterceptor 登录自定义日志文件

java - Selenium - 错误 : The expression is not a legal expression for xpath

selenium - 为功能性 Plone 测试用例记录 Selenium 测试

java - 使用 TestNG 编程逻辑

java - JUnit 中的参数化测试方法,而不仅仅是整个类

java - 如何使用 java 写入现有的 XML 文件

java - 对数组列表中的元素进行总计

python - 使用 Selenium 从没有 ID 或类的列表中抓取文本

java - 如何测试在 java 中实现 ConstraintValidator 的 validator ?

java - `(long)(float)Long.MAX_VALUE` 具有准确的值,这怎么可能?