怎么用命令行跑maven中的testng xml文件

怎么用命令行跑maven中的testng xml文件,第1张

传递Maven pomxml里的系统属性参数到TestNG,文章沿用笔者一贯的风格--例子驱动。 解决什么问题 1 用过WebDriver的都知道,当你启动Chrome或IE的时候都需要设置系统属性, 比如 1 SystemsetProperty("webdriveriedriver", "D:/temp/resourc

一、首先新建Java类实现IRetryAnalyzer接口,代码如下(主要配置自动重跑次数maxRetryCount):

[java] view plain copy

public class OverrideIReTry implements IRetryAnalyzer {

public static Logger logger=LoggergetLogger(OverrideIReTryclass);

public int retryCount=0;

private static int maxRetryCount ;

static {

//外围文件配置最大运行次数,失败后重跑maxRetryCount+1次

maxRetryCount = 2;//也就是失败后重跑3次

loggerinfo("maxRunCount=" + (maxRetryCount));

}

@Override public boolean retry(ITestResult iTestResult){

if(retryCount <= maxRetryCount){String message = "running retry for '" + iTestResultgetName() + "' on class " +

thisgetClass()getName() + " Retrying " + retryCount + " times";

loggerinfo(message);

ReportersetCurrentTestResult(iTestResult);

Reporterlog("RunCount=" + (retryCount + 1));

retryCount++;

return true;

} return false;

}

}

二、新建Java类实现IAnnotationTransformer接口,代码如下:

[java] view plain copy

package TezitongAll;

import javalangreflectConstructor;

import javalangreflectMethod;

import orgtestngIAnnotationTransformer;

import orgtestngIRetryAnalyzer;

import orgtestngannotationsITestAnnotation;

public class RetryListener implements IAnnotationTransformer {

@Override

public void transform(ITestAnnotation annotation, @SuppressWarnings("rawtypes") Class testClass,@SuppressWarnings("rawtypes") Constructor testConstructor, Method testMethod) {

IRetryAnalyzer retry = annotationgetRetryAnalyzer();

if (retry == null) {

annotationsetRetryAnalyzer(OverrideIReTryclass);

}

}

}

可在配置testng的环境变量设置。
新建一个TESTNG目录,用来存放依赖jar包,如放置C盘,配置系统变量:计算机-属性-高级系统设置-高级-环境变量-系统变量,变量名:TESTNG_HOME,变量值:C:\TESTNG,ClASSPAT与前面配置用;隔开H加入,cmd执行testngxml文件,进入testngxml文件目录执行命令java orgtestngTestNG testngxml,最后重启就可以了。

数据驱动是最常见的自动化测试框架模式之一,TestNG亦支持数据驱动,常用的有@Parameters和@DataProvider两种注解。这次主要是记录dataprovider的用法。
使用DataProvider提供数据有两种形式:

定义一个函数,函数名随意取,使用@DataProvider注解,注解中用name给这个provider起名字,该函数返回一个二维数组。
可以看到该测试方法运行了3次,每一次都把一个DataProvider提供的数组作为自己的参数输入然后执行了测试。

这种方式需通过dataProviderClass属性来指定@DataProvider类位置,并且@DataProvider注解的方法保持静态(static)。示例:

运行test后,结果:

除了上述的return Object[][],@DataProvider注解的方法也允许使用迭代器,区别是迭代器允许你延迟创建自己的测试数据,TestNG会调用迭代器,之后测试方法会一个接一个的调用由迭代器返回的值。在你需要传递很多参数组给测试方法的时候,无须提前创建一堆值。
如果希望DataProvider对不同的Test方法使用不同的dataprovider,那么在DataProvider中可以使用Method参数。
这里根据调用DataProvider的函数名,返回了不同的参数。
由于没有指定运行顺序,所以Test会按照字母顺序执行,先执行getFirst,然后getSecond

参考文档:
1、 >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10532081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存