我正在尝试运行用于登录和注销的测试脚本。登录和注销都是方法。我使用数据提供程序和登录方法进行数据驱动的框架,登出方法取决于登录。但是当我执行时,登录方法及其所有数据和注销只在最后执行一次。我如何一个接一个地执行login-logout以进行数据驱动的框架工作。谢谢你的帮助。
@Test(dataProvider = "DP")
public void login(String Usrname, String Pwd)
{
driver = new FirefoxDriver();
driver.get("***********");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("username")).sendKeys(Usrname);
driver.findElement(By.id("password")).sendKeys(Pwd);
driver.findElement(By.id("login")).click();
}
@Test(dependsOnMethods = { "login" })
public void logout(String Usrname, String Pwd)
{
driver.findElement(By.id("logout")).click();
driver.close();
}
我使用XML文件:
<suite name="Suite1" verbose="1" >
<test name="Factory" group-by-instances="true">
<classes>
<class name="test.AllMethod">
<methods>
<include name="login"/>
<include name="logout"/>
</methods>
</class>
</classes>
</test>
</suite>
执行如下:
login(1)
login(2)
login(3)
logout(1)
logout(2)
logout(3)
我如何执行它:
login(1)
logout(1)
login(2)
logout(2)
login(3)
logout(3)
答案 0 :(得分:0)
请为@AfterMethod
方法使用logout()
注释,而不是@Test
方法(相应地更改套件文件)。
注销方法并没有使用作为参数传递的凭据,顺便说一下,你可以跳过这些。
答案 1 :(得分:0)
//在注销方法之前不要使用@Test(dependsOnMethods = {“login”}),而是使用@AfterMethod
@Test(dataProvider = "DP")
public void login(String Usrname, String Pwd)
{
driver = new FirefoxDriver();
driver.get("***********");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("username")).sendKeys(Usrname);
driver.findElement(By.id("password")).sendKeys(Pwd);
driver.findElement(By.id("login")).click();
}
@AfterMethod
public void logout(String Usrname, String Pwd)
{
driver.findElement(By.id("logout")).click();
driver.close();
}