标签:black eth tar 更改 extends testng lis ima null
背景:在app测试中,很多场景当时出现,后期无法出现,如果这个时候就通过录制视频的方式记录那么问题就很快解决了,录制视频的简单命令:adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 默认录制10分钟就结束,注意我录制视频是会使用ip,默认录制视频使用的屏幕都很大,我们可以换个小的屏幕,具体录制视频adb参数可以看这篇博客http://blog.csdn.net/wirelessqa/article/details/22725581
在我们项目中,我们实际只需要在方法开始前执行录制视频,在监听成功或者失败后,在结束掉录制视频,而关键在于,结束是把录制视频的进程给杀掉,在启动时就记录了这个进程,然后就是把文件pull到本地,实现方法
package until; import java.io.IOException; public class publicmethod { /** * * @测试点: 开始录制视频 @param @param ip @param @param name @param @return * @备注: Process * @author zhangjun * @date 2017年9月13日 @修改说明 */ public Process startRecordVideo(String ip,String name){ System.out.println("开始录制视频"); String runadb="adb -s "+ip+" shell screenrecord /sdcard/"+name+".mp4"; System.out.println("执行的命令:"+runadb); Process runprocess = null; try { runprocess = Runtime.getRuntime().exec(runadb); } catch (IOException e) { e.printStackTrace(); } return runprocess; } /** * * @测试点: 结束视频录制,通过杀掉录制视频的进程,然后把视频数据复制到另外一个文件中 @param process 传入的进程 @param path 视频录制的位置 @param ip 传入的ip * @备注: void * @author zhangjun * @date 2017年9月13日 @修改说明 */ // public void stopRecordVideo(Process process, String path, String ip) { process.destroy(); // 结算掉进程 // 移动视频地址 String moveVideo = "adb -s " + ip + " pull " + path + "" + " D:\\test"; System.out.println("执行的命令:" + moveVideo); try { Runtime.getRuntime().exec(moveVideo);// 移动数据内容 System.out.println("移动视频成功,请在d盘test下查看"); } catch (IOException e) { e.printStackTrace(); } } } |
调用过程,更改监听器内容,
package until;
import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.TestListenerAdapter; public class TestngListener extends TestListenerAdapter { boolean Recordvideo=false; publicmethod pubmethod=new publicmethod(); Process getprocess; String ip="10.37.2.151:5555";
@Override public void onTestStart(ITestResult result) { super.onTestStart(result); logTest.logInfo("启动我是onTestStart,我是testng的测试方法"); String name=result.getName(); logTest.logInfo("获取的方法名"+name); getprocess=pubmethod.startRecordVideo(ip,name); } @Override public void onStart(ITestContext testContext) { super.onStart(testContext); logTest.logInfo("启动我是onstart,所有初始化都在我这里做"); } @Override public void onTestFailure(ITestResult tr) { super.onTestFailure(tr); logTest.logInfo("我是onTestFailure,代表我们的其他操作失败了"); //结束视频 pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip); } @Override public void onTestSuccess(ITestResult tr) { super.onTestSuccess(tr); //结束视频 pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip); } @Override public void onTestSkipped(ITestResult tr) { super.onTestSkipped(tr); }
} |
标签:black eth tar 更改 extends testng lis ima null
原文地址:http://www.cnblogs.com/chongyou/p/7516343.html