在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,因此会失败。拥有它的唯一数据提供者是第一个数组。有没有办法让dataproviders被调用到特定的断言?
答案 0 :(得分:2)
如果取决于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},
}
在我看来,这对于简单的案例是可以接受的。为了使断言更具可读性,我将向其添加一个也参数化的自定义消息。
我希望这会有所帮助。