TestNG官方网站:
http://testng.org/doc/documentation-main.html
5.10 - Parallelism and time-outs
You can instruct TestNG to run your tests in separate threads in various ways.
5.10.1 - Parallel suites
This is useful if you are running several suite files (e.g. "java org.testng.TestNG testng1.xml testng2.xml") and you want each of these suites to be run in a separate thread. You can use the following command line flag to specify the size of a thread pool:
java org.testng.TestNG |
The corresponding ant task name is suitethreadpoolsize.
5.10.2 - Parallel tests, classes and methods
The parallel attribute on the <suite> tag can take one of following values:
< suite name = "My suite" parallel = "methods" thread-count = "5" >
|
< suite name = "My suite" parallel = "tests" thread-count = "5" >
|
< suite name = "My suite" parallel = "classes" thread-count = "5" >
|
< suite name = "My suite" parallel = "instances" thread-count = "5" >
|
- parallel="methods": TestNG will run all your test methods in separate threads. Dependent methods will also run in separate threads but they will respect the order that you specified.
- parallel="tests": TestNG will run all the methods in the same <test> tag in the same thread, but each <test> tag will be in a separate thread. This allows you to group all your classes that are not thread safe in the same <test> and guarantee they will all run in the same thread while taking advantage of TestNG using as many threads as possible to run your tests.
- parallel="classes": TestNG will run all the methods in the same class in the same thread, but each class will be run in a separate thread.
- parallel="instances": TestNG will run all the methods in the same instance in the same thread, but two methods on two different instances will be running in different threads.
Additionally, the attribute thread-count allows you to specify how many threads should be allocated for this execution.
Note: the @Test attribute timeOut works in both parallel and non-parallel mode.
You can also specify that a @Test method should be invoked from different threads. You can use the attribute threadPoolSize to achieve this result:
@Test (threadPoolSize = 3 , invocationCount = 10 , timeOut = 10000 )
|
public void testServer()
|
In this example, the function testServer will be invoked ten times from three different threads. Additionally, a time-out of ten seconds guarantees that none of the threads will block on this thread forever. <!------------------------------------- RERUNNING ------------------------------------>
如果生成数据的方法很复杂,需要重写编写代码实现。可以通过写数据集类,在测试方法中调用测试集数据。
package com.easyway.testng; import org.testng.annotations.DataProvider; /** * 如果生成数据的方法很复杂,需要重写编写代码实现。可以通过写数据集类,在测试方法中调用测试集数据 * * @author longgangbai * 2013-11-19 下午2:43:50 * */ public class DynmicDataProvider { @DataProvider(name = "create") public static Object[][] createData() { return new Object[][] { new Object[] { new Integer(42) } }; } }
package com.easyway.testng; import org.testng.annotations.Test; /** * 制定数据集的类的测试 * @author longgangbai * 2013-11-9 下午2:45:24 * */ @Test public class StaticDataTest { @Test(dataProvider = "create", dataProviderClass = DynmicDataProvider.class,threadPoolSize = 3, invocationCount = 10, timeOut = 10000) public void test(Integer n) { System.out.println(" n ="+n); } }
结果:
[TestNG] Running:
C:\Users\Administrator\AppData\Local\Temp\testng-eclipse--1087250714\testng-customsuite.xml
n =42
PASSED: test(42)
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
[TestNG] Time taken by org.testng.reporters.XMLReporter@14b84ad: 10 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@114629: 20 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@10a621a: 0 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@4957c7: 0 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@c3dd7e: 0 ms
相关推荐
TestNG 是一个功能强大的测试框架,它扩展了JUnit的功能,提供了更多高级特性,如并发测试、参数化测试、分组测试和报告生成。在这个数据驱动测试框架中,TestNG用于组织测试用例和执行它们。通过使用TestNG的`@Test...
TestNG是一款强大的自动化测试框架,尤其适用于接口自动化测试。它提供了丰富的注解、灵活的测试配置和报告功能,使得测试工作更加高效。以下是对TestNG接口自动化测试的详细步骤的阐述: 1. **环境准备**:首先,...
它提供了更多高级特性,如并行测试、参数化测试、依赖性管理以及更灵活的报告。TestNG与Appium结合使用,可以为移动应用测试提供结构化的、可扩展的测试解决方案。 首先,要进行Appium+TestNG自动化测试,你需要...
在实际应用中,使用TestNG进行自动化测试时,可以结合这些文件来定制自己的测试流程和报告输出。例如,你可以通过`testng.xml`定义测试的执行顺序和参数,然后利用`template.html`自定义报告的样式,使其在呈现测试...
另一个值得一提的是,TestNG支持参数化测试,可以通过数据提供者(@DataProvider)来为测试方法提供不同输入数据,从而实现对同一测试逻辑的多种情况验证。这提高了测试覆盖率,确保了代码在不同条件下的稳定性。 在...
6. 参数化测试(Parameterized Tests):TestNG支持参数化测试,允许使用参数化数据来运行同一个测试方法多次。这可以用来测试同一方法在不同输入下的行为,从而提高测试覆盖率。 7. 数据提供者(Data Providers):...
总的来说,AutoParams是一个强大的工具,它通过自动化测试数据的生成,提高了Java开发者编写参数化测试的效率,有助于确保代码的质量和稳定性。在实际开发中,掌握并合理利用AutoParams,可以极大地提升测试工作的...
这是一个基于Selenium 3、Java、Maven、TestNG、ReportNG和Excel的自动化测试框架。这个框架结合了多种强大的工具和技术,旨在提高软件测试的效率和准确性,尤其是在Web应用程序的自动化测试领域。 1. **Selenium 3...
通过HttpClient,我们可以实现对接口的自动化测试,包括参数化请求、处理响应和异常处理。 最后,持续集成(CI)是现代软件开发的最佳实践,它将构建、测试和部署自动化。工具如Jenkins或GitLab CI/CD可以帮助我们...
一旦环境配置完毕,测试人员就可以编写测试代码,利用TestNG提供的注解来组织测试案例,创建套件测试、参数化测试、异常测试、依赖测试等,并且能够通过TestNG生成的报告来分析测试结果。 另外,TestNG也能够与...
Selenium和TestNG是两种广泛应用于Web自动化测试的开源工具,它们在软件开发流程中扮演着重要的角色。Selenium是一个强大的浏览器自动化框架,支持多种编程语言,如Java、Python、C#等,允许开发者编写脚本来模拟...
【TestNg_0920】是一个练习项目,主要涵盖了Selenium与Java的结合使用,以及数据驱动模式、页面对象模式和行为驱动开发...这个练习项目对于理解自动化测试流程,提升测试代码的可读性和可维护性具有很高的学习价值。
8. **数据驱动测试**:结合参数化测试,TestNG可以实现数据驱动测试,即从外部数据源(如CSV文件或数据库)获取测试数据。 9. **XML配置**:通过XML配置文件,你可以灵活地控制测试执行的顺序、并发性以及如何分组...
TestNG由Cédric Beust创建,它的设计灵感来源于JUnit,但引入了许多增强特性,例如并发测试、测试套件的灵活配置、数据驱动测试、参数化测试以及更丰富的异常处理等。这些特性使得TestNG更适合大型项目的自动化测试...
7. **数据驱动测试**:通过@DataProvider,TestNG可以为测试方法提供多组输入数据,实现数据驱动的测试,方便进行参数化测试。 8. **配置方法**:@Before/After系列注解允许定义在测试执行前后的配置方法,如初始化...
4. **数据驱动测试**:通过@DataProvider方法,TestNG可以为测试方法提供多组输入数据,实现数据驱动测试,简化了参数化测试的编写。 5. **依赖注入**:TestNG支持依赖注入,可以通过@注入注解将对象实例化并注入到...
8. **数据驱动测试**:与参数化测试类似,TestNG可以从外部数据源(如CSV文件、数据库等)获取测试数据,实现数据驱动的测试。 9. **群组测试**:通过`@Groups`注解,可以将测试方法分组,便于控制哪些测试应一起...
- 参数化测试:允许使用不同的参数组合运行同一个测试方法,提高测试覆盖率。 - 数据驱动测试:通过@Parameters注解,可以从外部数据源(如XML文件)获取测试数据,使测试更加灵活。 - 报告生成:TestNG会自动生成...
此外,TestNG还支持参数化测试,允许测试数据从外部源(如XML文件、CSV文件或数据库)导入。这使得测试用例可以覆盖更多边界条件和组合情况,提高了测试覆盖率。 在异常处理方面,TestNG允许测试方法声明期望的异常...