zoukankan      html  css  js  c++  java
  • 使用testNGListenter来自定义日志

    背景

    用testNG写用例的时候,只是打印了请求的日志,没有打印这个用例的开始和结束的标识,想加上这个标识这样更好的排查问题

    这种日志是加在用例开始执行和结束,相当于spring中的AOP功能,今天翻阅了testNG的文档发现有监听器这玩意,这玩意可以在testNG执行的某一过程中进行操作;

    操作步骤

    直接show the code:

    public class TestNGLogListener extends TestListenerAdapter {
    
        static Logger logger = LogManager.getLogger(TestNGLogListener.class.getName());
    
        @Override
        public void onTestFailure(ITestResult tr) {
            log(String.format("[method: %s]",tr.getName())+ "--Test method failed
    ");
        }
    
        @Override
        public void onTestSkipped(ITestResult tr) {
            log(String.format("[method: %s]",tr.getName())+ "--Test method skipped
    ");
        }
    
        @Override
        public void onTestSuccess(ITestResult tr) {
            log(String.format("[method: %s]",tr.getName())+ "--Test method success
    ");
        }
    
        @Override
        public void onTestStart(ITestResult tr) {
            log(String.format("[method: %s]",tr.getName())+ "-- START");
        }
    
        private void log(String string) {
            logger.info(string);
        }
    }

    1. 写编写一个监听器的类,继承 TestListenerAdapter 这个类,需要重写对应的几个方法

    void onTestFailure(ITestResult result) // 用例执行结果失败
    void onTestSkipped(ITestResult result) // 跳过该条用例
    void onTestSuccess(ITestResult result) // 用例执行结果成功
    void onTestStart(ITestResult tr) // 用例开始执行的时候

    2. 使用这个监听器,有两种方法

    2.1 第一种是直接在测试用例的class上加Listener注解,如下:

    @Listeners({CustomListener.class })
    public class SampleTest {
    
        @Test
        public void testMethodOne(){
            Assert.assertTrue(true);
        }
    
        @Test
        public void testMethodTwo(){
            Assert.assertTrue(false);
        }
    
        @Test(dependsOnMethods={"testMethodTwo"})
        public void testMethodThree(){
            Assert.assertTrue(true);
        }
    
    }

    2.2 直接在testNG.xml文件中添加,如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="wm-api-autotest">
        <test name="Test">
            <packages>
                <package name="com.jwen.demo"/>
            </packages>
        </test>
        <listeners>
            <listener class-name=com.jwen.demo.common.TestNGLogListener'/>
        </listeners>
    </suite> <!-- Suite -->

    2.3 效果展示:

  • 相关阅读:
    Eclipse安装python注意事项
    C# 计算文件MD5
    C# 为私有方法添加单元测试(反射)
    .net 操作sftp服务器
    在ASP.NET MVC中使用Unity进行依赖注入的三种方式
    ASP.NET Web API 安全筛选器
    Token Based Authentication in Web API 2
    IIS中查看W3P.exe进程对应的应用程序池的方法
    WCF自定义Header
    sqlserver 用 RowNumber 分组
  • 原文地址:https://www.cnblogs.com/jwentest/p/8253672.html
Copyright © 2011-2022 走看看