Testng 有没有办法拦截数据提供程序调用并更改其返回值?

Testng 有没有办法拦截数据提供程序调用并更改其返回值?,testng,testng-dataprovider,Testng,Testng Dataprovider,我有一组测试,总共需要很长时间才能执行。我想通过将所有数据提供程序更改为只返回一组参数来缩短一些测试运行 我已经阅读了TestNG文档和javadoc,但似乎没有类似于IDataProviderListener的内容。IMethodInterceptor可能适用于未设置依赖项的测试,但这是一个不完整的解决方案 我也知道可能有其他方法来减少测试时间,但我的选择有限,因为我的测试夹具是物理的、缓慢的和昂贵的(所以并行化是不可用的) 作为一个具体的例子,假设我有3个测试:TestA、TestB、Tes

我有一组测试,总共需要很长时间才能执行。我想通过将所有数据提供程序更改为只返回一组参数来缩短一些测试运行

我已经阅读了TestNG文档和javadoc,但似乎没有类似于IDataProviderListener的内容。IMethodInterceptor可能适用于未设置依赖项的测试,但这是一个不完整的解决方案

我也知道可能有其他方法来减少测试时间,但我的选择有限,因为我的测试夹具是物理的、缓慢的和昂贵的(所以并行化是不可用的)

作为一个具体的例子,假设我有3个测试:TestA、TestB、TestC、TestB和C使用唯一的数据提供者。TestB的dataprovider通常返回5组参数,从而执行10次TestB。类似于TestC,但它的dataprovider通常返回1个参数集,从而运行一次TestC。正常执行将是:

  • 种皮
  • 测试B
  • 测试B
  • 测试B
  • 测试B
  • 测试B
  • TestC
我想要的是一种在不修改数据提供程序或测试代码源的情况下获得以下内容的方法:

  • 种皮
  • 测试B
  • TestC

在扩展到TestNG的QAF中,通过提供。它还提供了以下功能:。以下是实施示例:

public class MyDataProviderIntercepter implements QAFDataProviderIntercepter{

 public void beforeFech(TestNGScenario scenario, ITestContext context){

 }
 public void List<Object[]> intercept(TestNGScenario scenario, ITestContext context, List<Object[]> testdata){

  //provide logic here
 }

}
公共类MyDataProviderIntercepter实现QAFDataProviderIntercepter{
公共void beforeFech(TestNGScenario,ITestContext){
}
公共void列表截获(TestNGScenario、ITestContext上下文、List testdata){
//在这里提供逻辑
}
}

您需要将该类注册为qaf侦听器

埃里克,恐怕在TestNG中没有什么能帮你做到这一点。因此,我在TestNG问题上为此记录了一张增强记录单。参考并跟踪它