
正文
TestNG失败用例自动截图
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
参考:https://blog.csdn.net/wangxin1982314/article/details/50247245
1. 首先写一个截屏方法
public class ScreenShotOnFailure {
public static final String SCREEN_SHOT_PATH = "test-output/screen-shot";
public static String SCREEN_SHOT_NAME = null; public static void takeScreenShot() throws IOException {
File screenshotDir = new File(SCREEN_SHOT_PATH);
if(!screenshotDir.exists()) {
screenshotDir.mkdirs();
} SimpleDateFormat smf = new SimpleDateFormat("yyyyMMddHHmmss");
SCREEN_SHOT_NAME = String.valueOf(smf.format(new Date())) + ".jpg";
FileUtils.copyFile(((TakesScreenshot)browser.getWebDriver()).getScreenshotAs(OutputType.FILE),
new File(SCREEN_SHOT_PATH + "/"+ SCREEN_SHOT_NAME));
}
}
2. 新建一个监听类,重写onTestFailure方法
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import static com.crewbudget.bean.ScreenShotOnFailure.SCREEN_SHOT_NAME;
import static com.crewbudget.bean.ScreenShotOnFailure.SCREEN_SHOT_PATH; public class TestngRetryListener implements ITestListener{
public void onTestFailure(ITestResult result) {
try {
ScreenShotOnFailure.takeScreenShot();
System.out.println(result.getMethod().getMethodName()+"failed, the screenshot saved in "
+ SCREEN_SHOT_PATH +" screenshot name: "
+ SCREEN_SHOT_NAME);
} catch (Exception e) {
e.printStackTrace();
}
} @Override
public void onTestStart(ITestResult result) {
// TODO Auto-generated method stub } @Override
public void onTestSuccess(ITestResult result) {
// TODO Auto-generated method stub } @Override
public void onTestSkipped(ITestResult result) {
// TODO Auto-generated method stub } @Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
// TODO Auto-generated method stub } @Override
public void onStart(ITestContext context) {
// TODO Auto-generated method stub } @Override
public void onFinish(ITestContext context) {
// TODO Auto-generated method stub }
}
3. 在测试脚本中添加监听








