TestNG通过编程执行用例
2016-11-02 21:24
211 查看
1、定义一个自己的retryanalyzer
2、定义自己的监听器,集成自TestListenerAdapter
3、在测试申明中说明使用retry
@Test(retryAnalyzer = TestRetryAnalyzer.class)
4、加入一个我们自己的监听器,执行
import org.testng.ITestResult; import org.testng.util.RetryAnalyzerCount; //这里继承自抽象类RetryAnalyzerCount,该抽象类实现了IRetryAnalyzer public class TestRetryAnalyzer extends RetryAnalyzerCount{ public TestRetryAnalyzer(){ setCount(1); } @Override public boolean retryMethod(ITestResult arg0) { // TODO Auto-generated method stub return true; } }
2、定义自己的监听器,集成自TestListenerAdapter
import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.testng.IResultMap; import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.Reporter; import org.testng.TestListenerAdapter; import org.testng.ITestNGMethod; import org.testng.collections.Lists; import org.testng.collections.Objects; public class RetryTestListener extends TestListenerAdapter { private List<ITestNGMethod> m_allTestMethods = Collections.synchronizedList(Lists.<ITestNGMethod>newArrayList()); private List<ITestResult> m_passedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestResult> m_failedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestResult> m_skippedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestResult> m_failedButWSPerTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestContext> m_testContexts= Collections.synchronizedList(new ArrayList<ITestContext>()); private List<ITestResult> m_failedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestResult> m_skippedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList()); private List<ITestResult> m_passedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList()); public synchronized void onTestFailure(ITestResult arg0) { m_allTestMethods.add(arg0.getMethod()); m_failedTests.add(arg0); } @Override public void onFinish(ITestContext context) { for(int i=0;i<context.getAllTestMethods().length;i++){ System.out.println("~~~~~~~~~~"+context.getAllTestMethods()[i].getCurrentInvocationCount()); if(context.getAllTestMethods()[i].getCurrentInvocationCount()==2){ System.out.println("~~~~~~~~~~~~~~~~~"+context.getAllTestMethods()[i].getParameterInvocationCount()); System.out.println(context.getAllTestMethods()[i].ignoreMissingDependencies()); if (context.getFailedTests().getResults(context.getAllTestMethods()[i]).size() == 2 || context.getPassedTests().getResults(context.getAllTestMethods()[i]).size() == 1){ context.getFailedTests().removeResult(context.getAllTestMethods()[i]); } } } } ... }
3、在测试申明中说明使用retry
@Test(retryAnalyzer = TestRetryAnalyzer.class)
4、加入一个我们自己的监听器,执行
public class RetryTest { public static void main(String args[]){ TestNG tng = new TestNG(); RetryTestListener rtl = new RetryTestListener(); XmlSuite xs = new XmlSuite(); Parser parser = new Parser("./testxml/temp.xml"); List<XmlSuite> suites = new ArrayList<XmlSuite>(); try { suites = parser.parseToList(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }; tng.setXmlSuites(suites); tng.addListener(rtl); tng.run(); } }
相关文章推荐
- appium 通过testng 实现在不同的测试机上并行执行测试用例
- TestNG设置输出测试报告的内容级别和设置测试用例按顺序执行
- 通过测试用例和执行结果,让你正确推测和理解Session中Load和get的区别,不再困惑
- 实现testng监听器统一修改用例运行次数,随机执行测试用例
- testng执行用例失败,再次执行
- Spark-sql:以编程方式执行Spark SQL查询(通过反射的方式推断出Schema,通过StrutType直接指定Schema)
- CodeSmith实用技巧(十):通过编程执行模版
- testng对执行失败的用例,再次执行
- TestNG执行测试用例的顺序
- 关于如何以编程的方式执行TestNG
- Instruments-Automation: 通过命令行执行测试用例
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
- 使用testng+xml编写、执行自动化测试用例
- appium android——利用testng和maven并行执行用例
- TestNG设置输出测试报告的内容级别和设置测试用例按顺序执行
- Appium Android ——利用 TestNG 并行执行用例
- c# 数据库编程(通过SqlCommand 执行DML语句)
- 如何解决testng执行用例报错自动截图问题
- TestNG的编程执行概述
- selenium的TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言_06