java testng 优化_java-testng-selenium优化

由于项目中webui测试的需要,是用testng+selenium的方式,其中遇到过几个问题,记录下,方便以后查看

1.重复运行多次case

因为是selenium,所以有的时候需要运行多次,方法是写一个Retry的类,继承testng的retry类就可以。

public class Retry implementsIRetryAnalyzer {private int retryCount = 0;private int maxRetryCount = 3;public booleanretry(ITestResult result) {if (retryCount

retryCount++;

System.out.println(String.format("test failed!try %d time!",retryCount+1));return true;

}return false;

}

运行的时候就在case上加上

@Test(retryAnalyzer=Retry.class)

就可以拉

2.自定义annotions

虽然testng自带有很多注释,很好用,但是在项目中,组长要求在每个case前面能够描述一下这个case的作用,以后当case失败的时候,可以输出这个case的作用和失败原因,要外人不看代码也可以看的懂,所以就想自定义一个annotation,添加个decsription属性。

1 //UIMessage.java

2 import staticcom.myhexin.common.Assert.AssertEquals;3

4 importjava.lang.annotation.Retention;5 importjava.lang.annotation.RetentionPolicy;6 importjava.lang.annotation.Target;7 importjava.lang.annotation.ElementType;8

9 importorg.testng.annotations.Parameters;10 importorg.testng.annotations.Test;11 @Retention(RetentionPolicy.RUNTIME)12 @Target({ElementType.METHOD})13 public @interfaceUIMessage {14 String description();15 }16

17 //应用

18 @UIMessage(description = "我是来试试的")@Test(retryAnalyzer=Retry.class)19 @Parameters()20 public voidtestDengLuZhangHao(){21 /*

22 * 函数体23 */

24 }25 //如何获取annotation的注释消息,我是用反射来获取的

26

27 Method[] methods=Class.forName("core.Member").getDeclaredMethods();28 for(Method method:methods)29 {30 if(method.isAnnotationPresent( UIMessage. class))31 {32 System. out.println(method.getAnnotation( UIMessage. class).desciption());33 }34 }

3.selenium截图

目前该截图方式当在remote执行selenium时候,我只是在firefox下成功过,ie打死不行,场景是当case运行失败的时候截图,主要是重写下assert,当断言失败时候,截图,直接上,截图的代码

public void screenShot(WebDriver driver,inti)

{

String dir_name="./pic";if (!(new File(dir_name).isDirectory())) { //判断是否存在该目录

new File(dir_name).mkdir(); //如果不存在则新建一个目录

}

SimpleDateFormat sdf= new SimpleDateFormat("-HHmmss");

String time= sdf.format(newDate());

WebDriver augmentedDriver= newAugmenter().augment(driver);try{

File screenshot= ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE); //关键代码,执行屏幕截图,默认会把截图保存到temp目录

FileUtils.copyFile(screenshot, new File(dir_name + File.separator + i+ time + ".png")); //这里将截图另存到我们需要保存

} catch(IOException e) {

e.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值