zoukankan      html  css  js  c++  java
  • IReporter

    转自:https://www.cnblogs.com/jingwei/p/5411164.html
    selenium+testng框架时,讲到listener这块发现对listener并没有完全了解,于是自己又重新学习了下。
    以下是 TestNG 提供的几种监听器:
    尽管名字叫监听器,但事实上它们只是一些预定义的 Java 接口。用户创建这些接口的实现类,并把它们加入到 TestNG 中,TestNG 便会在测试运行的不同时刻调用这些类中的接口方法。
    目前的框架主要用到IReporter 和 ITestLisntener。
    TestNG 提供了默认的测试报表。但如果用户希望有不同格式的测试报表,就需要使用 IReporter 监听器。IReporter 监听器只有一个方法需要实现。
    如果要在测试方法执行成功、失败或者跳过时指定不同后续行为,可以通过 IInvokedMethodListener 实现,不过更为简便的方式是利用 ITestListener 监听器。ITestListener 监听器要求实现的方法中包含如下三个
    <?xml version="1.0" encoding="UTF-8"?> <suite name="Simple Suite"> <listeners> <listener class-name="Listener-name" /> </listeners> <test name="Simple test"> <classes> <class name="SampleTest" /> </classes> </test> </suite>
    同时需要在脚本的类定义前面加上@listener标签。
    这里如果Listener-name是个实现了IReporter的方法,那么他就会在最后按具体实现生产report.
    而如果他是个实现了ITestLisntener的方法,那么其实在测试脚本里,他能根据执行的成功或失败或跳过,自动的给出执行的结果,如下列:
    import org.testng.Assert; import org.testng.annotations.Test; 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); } }
    这里有3个测试方法,每个里面有断言,但这里并没有对结果进行输出。
    import org.testng.ITestResult; import org.testng.TestListenerAdapter; public class myListener extends TestListenerAdapter{ private int m_count = 0; @Override public void onTestFailure(ITestResult tr) { log(tr.getName()+ "--Test method failed "); } @Override public void onTestSkipped(ITestResult tr) { log(tr.getName()+ "--Test method skipped "); } @Override public void onTestSuccess(ITestResult tr) { log(tr.getName()+ "--Test method success "); } private void log(String string) { System.out.print(string); if (++m_count % 40 == 0) { System.out.println(""); } } }
    这是实现了ITestListener的类,同样利用前面那个testsuite.xml。把listener-name修改成myListener,执行后得到如下结果:
    testMethodOne--Test method success testMethodTwo--Test method failed testMethodThree--Test method skipped =============================================== Simple Logger Suite Total tests run: 3, Failures: 1, Skips: 1 ===============================================
    它的作用很明显了,就不用在测试脚本/方法里再去添加结果的记录代码了,当然你也可以根据项目需求加上结果记录代码,然后决定到底用哪一种,这个就按需取舍了。
  • 相关阅读:
    LeetCode 204
    华为OJ2051-最小的K个数(Top K问题)
    华为OJ1964-求解立方根(牛顿迭代法)
    华为OJ2288-合唱队(最长递增子序列)
    华为OJ2011-最长公共子串
    【Unix编程】进程间通信(IPC)
    可利用空间表(Free List)
    13.10 Scrapy 通用爬虫
    13.9 Scrapy 对接 Splash
    第十四章 分布式爬虫
  • 原文地址:https://www.cnblogs.com/celine/p/8017150.html
Copyright © 2011-2022 走看看