我有很多将在各种@Test方法中使用的测试数据。我计划使用@Parameters为每个@Test方法传递我的测试数据(通常每个测试1-2个参数)。但是各种参考文献都建议@Parameters读取testng.xml中定义的属性。我不想在单个testng XML文件中定义所有属性名称,而是希望拥有单独的XML,以便我也可以组织我的测试数据。 那么有可能这样做吗?还有其他管理测试数据的方法吗? P.S:Excel不是一个选项
答案 0 :(得分:1)
这可能会对您有所帮助: - 您是否尝试过这种方法?
您也可以使用数据提供程序获取测试数据,如下所示: -
public class DataProviderTest {
private static WebDriver driver;
@DataProvider(name = "Authentication")
public static Object[][] credentials() {
return new Object[][] { { "a", "a" }, { "b",
"b" }};
}
// Here we are calling the Data Provider object with its Name
@Test(dataProvider = "Authentication")
public void test(String sUsername, String sPassword) {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://yoursite.com");
driver.findElement(By.xpath(".//*[@id='account']/a")).click();
driver.findElement(By.id("log")).sendKeys(sUsername);
driver.findElement(By.id("pwd")).sendKeys(sPassword);
driver.findElement(By.id("login")).click();
driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click();
driver.quit();
}
}
[您可以编写用于读取xml文件的逻辑,并可以将该数据传递给dataprovider并在每次测试中使用相同的数据提供者。]
请告诉我这是否对您有所帮助。所以我可以建议你其他解决方案。
答案 1 :(得分:0)
在testng.xml中,您需要添加参数,在值中,您可以使用相关xml文件名称和要在xml中查找的名称的串联。
在BeforeMethod中你将在Object []中得到它,然后你可以创建自己的逻辑来分割值。然后解析XML文件并检索实际数据。解析逻辑将取决于xml的结构,无论如何都可以轻松使用所有Java-XML解析器。
<parameter name="first" value="dataone-first"></parameter>
<parameter name="second" value="dataone-second"></parameter
@Test
@Parameters({"first","second"})
public void testMeth(int a, int b){
}
@BeforeMethod
public void befMeth(Object[] params) {
for(int j=0;j<params.length;j++){
String xmlData = params[j].toString();
String actualValue = logicToParseXMLAndGetValue(xmlData)
params[j] = actualValue;
}
}