如何在TestNG开始时获得总测试数量(包括考虑数据提供者)?

时间:2015-07-06 05:56:38

标签: testng testng-dataprovider

有人能告诉我如何获得(预期)TestNG(套件)开始时所有测试/方法执行的计数吗?

您可以轻松获取所有测试方法的数量,但这并不会计算每个测试方法乘以数据提供者大小的数量(每个方法将计算一次,即使一个方法通过1​​00次执行100次)数据提供者)。

除非有一个明显的解决方案,就像一个简单的API调用,关键似乎是从@Test注释中给出的数据提供者名称中找出数据提供者方法,我在这里问: How to get data provider method from TestNG data provider name?

一旦知道数据提供者方法是什么,就可以执行数据提供者,并计算数据集的数量。这看起来效率不高,但我们正在运行的测试不是单元测试,所以我不会太担心两次执行数据提供程序(与多长时间相比,这将是一个花生实际测试运行。)

3 个答案:

答案 0 :(得分:0)

您可以使用listener并在其中拥有自己的计数逻辑。

答案 1 :(得分:0)

不幸的是,没有简单的方法可以直接在TestNG中获得以下任意一个-

  1. 不。测试用例的数量通过
  2. 成功率

这是解决方法,我确实获得了PASS百分比。 如您所见,运行摘要将打印以下内容,包括Dataprovider测试的数量-

Total tests run: 4, Passes: 1, Failures: 3, Skips: 0

所以测试用例总数=通过计数+失败计数+跳过计数 所以我写了这样的方法

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("###################  TESTS STARTED   ##################### ");
            TestListenerAdapter tla = new TestListenerAdapter();
            TestNG testng = new TestNG();
            testng.setTestClasses(new Class[] { PassCSVDatatoDataProvider.class });
            testng.addListener(tla);
            testng.run();
            
            float Totalcount = (tla.getFailedTests().size()+tla.getPassedTests().size()+tla.getSkippedTests().size());
            float Passpercentage = (tla.getPassedTests().size()/Totalcount*100);
            System.out.println("PASS PERCENTAGE - "+Passpercentage +"%");
            System.out.println(tla.getFailedTests().size()+ "  TESTS FAILED ! ");
            
            System.out.println("###################      END   ##################### ");
        }

TestNG控制台输出

###################  TESTS STARTED   ##################### 
=============================================== Command line suite Total tests run: 4, Passes: 1, Failures: 3, Skips: 0
===============================================

PASS PERCENTAGE - 25.0% 
3  TESTS FAILED ! 
###################      END   #####################

答案 2 :(得分:0)

在试运行中尝试实现 IInvokedMethodListener 并覆盖 beforeInvocation 方法

public class Test implements IInvokedMethodListener
{
    static int testcount=0;
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
            
            testcount=testcount+method.getTestMethod().getInvocationCount();
    }

    @Override
    public void onStart(ISuite suite) {
        // TODO Auto-generated method stub
        
    }

    
    @Override
    public void onFinish(ISuite suite) {
        System.out.println(testcount);
        
    }
}