如何使用TestNG使用不同的数据重新运行测试

时间:2015-02-08 04:39:58

标签: selenium-webdriver testng

目前,当使用TestNG iRetryAnalyzer测试失败时,我们会重新运行测试。

我们面临的问题是:

我们有一个测试来添加用户'。添加用户后第一次在检查成功消息发生异常的过程中(Timeout / NosuchElement)等但是用户被添加到数据库中。

现在,当我们使用相同的数据重新运行测试时,测试失败,因为用户已经被添加。

我怎样才能克服这个?

这里是数据,用户电子邮件ID唯一字段。至少我可以在第二次重新运行时更改电子邮件ID。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

如果您只是需要创建一个您不需要实际使用的唯一虚假电子邮件地址,您可以随时在您从DataProvider获得的某些基本电子邮件中附加日期/时间戳:

 @Test(dataProvider = "dp")
 public void emailTest(String userName, String emailShortname) {

 //Get the current time
 long time = System.currentTimeMillis();

 //append it to the email from your DataProvider
 StringBuilder emailBuilder= new StringBuilder();
 emailBuilder.append(emailShortname).append("_").append(time).append("@gmail.com");

  //do user creation code below using emailBuilder result...

我想说如果你要使用Selenium进行这些类型的测试,你将用垃圾测试ID填充你的数据库,所以我建议你的团队创建一个机制来清除它们试运行的一部分或之后。

答案 1 :(得分:0)

理想情况下,如果有办法删除用户。您应该在@aftertest方法中使用它并删除该用户。

这样,下次您将再次使用相同的电子邮件ID,无论测试成功与否。

如果没有,如果电子邮件ID永远不会被验证(我的意思是像您用来确认用户的确认电子邮件),您可以像xyz123@gmail.com一样动态创建虚假的电子邮件ID。如果电子邮件ID已经过验证,那么我猜您遇到了麻烦。