Как включить скриншот с ошибкой в ​​отчет testNG - PullRequest
4 голосов
/ 20 января 2012

в настоящее время я делаю скриншоты моих тестовых неудач следующим образом:

@AfterMethod(alwaysRun=true)
public void catchExceptions(ITestResult result){
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
    String methodName = result.getName();
    if(!result.isSuccess()){
        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(scrFile, new File((String) PathConverter.convert("failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png")));
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

Могу ли я включить свои скриншоты в ссылку на отчет TestNG или рис? Если да, то как?

Все, что я нашел на этом сайте, - это структура FEST. Но так как я уже делаю скриншоты, я не хочу использовать другой фреймворк.

1 Ответ

15 голосов
/ 23 января 2012

Да, вы можете включить ссылку на свой скриншот в отчете тестирования.

Вам нужно вызвать метод org.testng.Reporter.log, чтобы записать гиперссылку на отчет , либо добавив аннотацию к вашему классу тестирования или к родительскому классу всех классов тестирования с помощью @Listeners ({yourListener.class}), либодобавив слушателя к вашему testng.xml.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="default">
  <listeners>
    <listener class-name="ScreenshotListener" />
  </listeners>
  <test name="Test">
    <packages>
      <package name="someTests.*"/>
    </packages>
  </test>
</suite>

Сначала вам нужно создать класс Listener и добавить его в testng.Вы можете получить подробную информацию об этом на testng.org.Поиск слушателя.

Как только вы создадите этот класс, вы должны написать в нем метод, который переопределяет метод ontestfailure.Код внутри этого метода будет выполняться всякий раз, когда testng идентифицирует ошибку.

Вы можете вызвать метод захвата скриншота и использовать Reporter.log, чтобы добавить гиперссылку на этот скриншот.Тогда вы можете найти эту ссылку под подробностями неудачных тестов.

import java.io.*;
import java.util.*;
import java.text.*;
import org.apache.commons.io.FileUtils;

import org.openqa.selenium.*;

import org.testng.*;

public class ScreenshotListener extends TestListenerAdapter {
    @Override
    public void onTestFailure(ITestResult result) {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
        String methodName = result.getName();
        if(!result.isSuccess()){
            File scrFile = ((TakesScreenshot)SomeStaticWebDriver.driver).getScreenshotAs(OutputType.FILE);
            try {
                String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "/target/surefire-reports";
                File destFile = new File((String) reportDirectory+"/failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png");
                FileUtils.copyFile(scrFile, destFile);
                Reporter.log("<a href='"+ destFile.getAbsolutePath() + "'> <img src='"+ destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...