zoukankan      html  css  js  c++  java
  • selenium自动化-java-封断言类2

    封装断言类

     1 package streamax.com;
     2  
     3 import java.util.ArrayList;
     4 import java.util.List;
     5  
     6 import org.testng.Assert;
     7  /*
     8   * 断言类
     9   * 被調用判斷
    10   *
    11   */
    12 public class Assertion {
    13      
    14     public static boolean flag = true;
    15      
    16     public static List<Error> errors = new ArrayList<Error>();
    17      
    18     public static void verifyEquals(Object actual, Object expected){
    19         try{
    20             Assert.assertEquals(actual, expected);
    21         }catch(Error e){
    22             errors.add(e);
    23             flag = false;
    24         }
    25     }
    26      
    27     public static void verifyEquals(Object actual, Object expected, String message){
    28         try{
    29             Assert.assertEquals(actual, expected, message);
    30         }catch(Error e){
    31             errors.add(e);
    32             flag = false;
    33         }
    34     }
    35  
    36 }

    2 监听类

     1 package streamax.com;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5  
     6 import org.testng.ITestResult;
     7 import org.testng.TestListenerAdapter;
     8  /*
     9   * 监听类
    10   */
    11 public class AssertionListener extends TestListenerAdapter {
    12  
    13     @Override
    14     public void onTestStart(ITestResult result) {
    15         Assertion.flag = true;       
    16         Assertion.errors.clear();
    17     }
    18      
    19     @Override
    20     public void onTestFailure(ITestResult tr) {
    21         this.handleAssertion(tr);
    22     }
    23      
    24     @Override
    25     public void onTestSkipped(ITestResult tr) {
    26         this.handleAssertion(tr);
    27     }
    28      
    29     @Override
    30     public void onTestSuccess(ITestResult tr) {
    31         this.handleAssertion(tr);
    32     }
    33      
    34     private int index = 0;
    35      
    36     private void handleAssertion(ITestResult tr){
    37         if(!Assertion.flag){
    38             Throwable throwable = tr.getThrowable();           
    39             if(throwable==null){
    40                 throwable = new Throwable();
    41             }           
    42             StackTraceElement[] traces = throwable.getStackTrace();
    43             StackTraceElement[] alltrace = new StackTraceElement[0];           
    44             for (Error e : Assertion.errors) {
    45                 StackTraceElement[] errorTraces = e.getStackTrace();
    46                 StackTraceElement[] et = this.getKeyStackTrace(tr, errorTraces);
    47                 StackTraceElement[] message = new StackTraceElement[]{new StackTraceElement("message : "+e.getMessage()+" in method : ", tr.getMethod().getMethodName(), tr.getTestClass().getRealClass().getSimpleName(), index)};
    48                 index = 0;
    49                 alltrace = this.merge(alltrace, message);
    50                 alltrace = this.merge(alltrace, et);
    51             }
    52             if(traces!=null){
    53                 traces = this.getKeyStackTrace(tr, traces);
    54                 alltrace = this.merge(alltrace, traces);
    55             }           
    56             throwable.setStackTrace(alltrace);
    57             tr.setThrowable(throwable);
    58             Assertion.flag = true;   
    59             Assertion.errors.clear();
    60             tr.setStatus(ITestResult.FAILURE);           
    61         }
    62     }
    63      
    64     private StackTraceElement[] getKeyStackTrace(ITestResult tr, StackTraceElement[] stackTraceElements){
    65         List<StackTraceElement> ets = new ArrayList<StackTraceElement>();
    66         for (StackTraceElement stackTraceElement : stackTraceElements) {           
    67             if(stackTraceElement.getClassName().equals(tr.getTestClass().getName())){               
    68                 ets.add(stackTraceElement);
    69                 index = stackTraceElement.getLineNumber();
    70             }
    71         }
    72         StackTraceElement[] et = new StackTraceElement[ets.size()];
    73         for (int i = 0; i < et.length; i++) {
    74             et[i] = ets.get(i);
    75         }
    76         return et;
    77     }
    78      
    79     private StackTraceElement[] merge(StackTraceElement[] traces1, StackTraceElement[] traces2){
    80         StackTraceElement[] ste = new StackTraceElement[traces1.length+traces2.length];
    81         for (int i = 0; i < traces1.length; i++) {
    82             ste[i] = traces1[i];
    83         }
    84         for (int i = 0; i < traces2.length; i++) {
    85             ste[traces1.length+i] = traces2[i];
    86         }
    87         return ste;
    88     }
    89 }
  • 相关阅读:
    flask基础之jijia2模板使用基础(二)
    python之微信公众号开发(基本配置和校验)
    flask插件系列之SQLAlchemy基础使用
    python基础之常用的高阶函数
    服务器部署之nginx的配置
    python之gunicorn的配置
    python内置模块之unittest测试(五)
    python之celery使用详解一
    git服务器的简单搭建
    python模块分析之logging日志(四)
  • 原文地址:https://www.cnblogs.com/hs22/p/6044082.html
Copyright © 2011-2022 走看看