作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一组测试总共需要很长时间才能执行。我想通过将所有数据提供者更改为仅返回一组参数来缩短我的一些测试运行。
我已经通读了 TestNG 文档和 javadoc,但似乎没有像 IDataProviderListener 这样的东西。 IMethodInterceptor 可能适用于没有设置依赖项的测试,但那将是一个不完整的解决方案。
我也知道可能有其他方法可以减少测试时间,但我的选择有限,因为我的测试夹具是物理的、缓慢的且昂贵的(因此并行化不可用。)
举个具体的例子,假设我有 3 个测试:TestA、TestB、TestC,以及测试 B 和 C 使用唯一的数据提供者。 TestB 的数据提供者通常返回 5 组参数,导致 TestB 执行 10 次。与 TestC 类似,但它的数据提供程序通常返回 1 个参数集,从而导致单次运行 TestC。正常的执行是:
我想要的是一种在不修改数据提供者或测试代码源的情况下获得以下内容的方法:
最佳答案
在作为 TestNG 扩展的 QAF 中,通过提供 data provider intercepter 在 TestNG 之外实现了这样的用例.它还提供了 filter test-data 的功能.以下是 QAFDataProviderIntercepter 的示例实现:
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
}
}
您需要将此类注册为qaf 监听器。
关于testng - 有没有办法拦截 dataprovider 调用并更改它们的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56972050/
我是一名优秀的程序员,十分优秀!