执行用例监听?
public class IHookableImp implements IHookable {
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
ConstructorOrMethod method = iTestResult.getMethod().getConstructorOrMethod();
String name = method.getName();
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "IHookableImp 测试method是 "+name);
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "IHookableImp 开始执行~");
//测试用例开始执行
iHookCallBack.runTestMethod(iTestResult);
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "IHookableImp 结束~");
}
}
展示报告?
?
for(ISuite iSuite:suites){
Map<String,ISuiteResult> iSuiteResultMap = iSuite.getResults();
//获取所有执行的方法
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 所有执行的方法:"+iSuite.getAllInvokedMethods());
//获取所有@Test标注的方法
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 获取所有@Test标注的方法:"+iSuite.getAllMethods());
//获取suite标签的name属性
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport suiteName:"+iSuite.getName());
//获取测试报告的输出路径
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 输出路径:"+iSuite.getOutputDirectory());
System.out.println("CustomTestCaseReport 报告路径:"+outputDirectory);
//获取并发方式
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 并发方式:"+iSuite.getParallel());
for(ISuiteResult iSuiteResult:iSuiteResultMap.values()){
ITestContext iTestContext = iSuiteResult.getTestContext();
IResultMap iResultMap = iTestContext.getPassedTests();
Set<ITestResult> iTestResultset = iResultMap.getAllResults();
for(ITestResult iTestResult:iTestResultset){
//获取执行的Test方法
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 测试方法:"+iTestResult.getName());
//获取执行结果
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 执行结果(1-成功,2-失败,3-skip):"+iTestResult.getStatus());
//获取开始执行的时间
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 开始时间:"+iTestResult.getStartMillis());
//获取结束执行的时间
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "CustomTestCaseReport 结束时间:"+iTestResult.getEndMillis());
}
}
}
?执行前监听
public class IInvokedMethodListenerImp implements IInvokedMethodListener {
//TestNG在调用方法前、后启用该监听器,常用于日志的采集。
@Override
public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
//获取执行的@Test方法
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "IInvokedMethodListenerImp "+iTestResult.getName());
}
@Override
public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
//获取执行的@Test方法
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "IInvokedMethodListenerImp "+iTestResult.getName());
}
}
?成功或失败
?
public class TestListenerAdapterImp extends TestListenerAdapter {
private int m_count = 0;
@Override
public void onTestFailure(ITestResult tr) {
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "TestListenerAdapterImp --Test method failed\n");
}
@Override
public void onTestSkipped(ITestResult tr) {
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "TestListenerAdapterImp --Test method skipped\n");
}
@Override
public void onTestSuccess(ITestResult tr) {
if (Constants.ISDEBUG) System.out.println(Constants.LogCustom + "TestListenerAdapterImp --Test method success\n");
}
private void log(String string) {
System.out.print(string);
if (++m_count % 40 == 0) {
System.out.println("");
}
}
}
|