TestNG参数– DataProvider和XML
时间:2020-02-23 14:41:57 来源:igfitidea点击:
TestNG方法也可以有参数。
我们可以通过两种方式注入方法参数:
使用
@ DataProvider
注释–我已经在TestNG DataProvider教程中对此进行了解释。使用
@ Parameters
注释–该注释使我们能够从TestNG XML套件文件中注入参数。
在本教程中,我们将专注于此批注并学习如何使用它。
TestNG参数注释
关于@Parameters批注的一些重要点是:
TestNG @Parameters批注可以应用于@ Before,@ After和@Test方法。
如果我们想继续更改测试方法的输入,这是首选方法,因为我们不需要再次编译测试类。
@Parameters批注要求我们提供要在测试套件xml文件中查找的参数名称的字符串数组。
参数的数量应与方法中的参数的数量匹配。当测试套件xml文件中缺少参数时,我们可以将@Optional与方法参数一起使用以提供默认值。
可以在套件级别或者测试级别定义TestNG套件XML文件中的参数。
如果存在具有相同名称的参数,则测试参数具有优先权并覆盖该值。
TestNG参数示例
现在我们已经完成了理论部分,我们来看一个完整的TestNG测试类示例,其中我们将使用@Parameters批注。
package com.theitroad.parameters; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class TestParameters { @Test @Parameters("arguments") public void singleParameterTest(String s) { System.out.println("Testing for input parameter = " + s); } @Test @Parameters({ "id", "name" }) public void multipleParameterTest(int id, String s) { System.out.println("Testing for multiple input parameter = " + id + " and " + s); } @BeforeSuite @Parameters("before_suite") public void beforeSuite(String s) { System.out.println("Before Suite Parameter = " + s); } @AfterSuite @Parameters("after_suite") public void afterSuite(@Optional("Default Parameter") String s) { System.out.println("After Suite Parameter = " + s); } }
这是测试套件的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="Default suite" guice-stage="DEVELOPMENT"> <parameter name="before_suite" value="My Before Suite Parameter"></parameter> <parameter name="id" value="100"></parameter> <!-- Suite Level Parameters --> <test thread-count="5" name="Default test" verbose="2"> <parameter name="arguments" value="hyman"></parameter> <parameter name="name" value="theitroad"></parameter> <!-- Test Level Parameters --> <classes> <class name="com.theitroad.parameters.TestParameters" </classes> </test> </suite>
TestNG参数XML Suite测试
如果使用的是Eclipse TestNG插件,则可以直接运行测试套件XML文件,如下图所示。
我们将在eclipse控制台中获得以下输出。
[RemoteTestNG] detected TestNG version 6.14.3 Before Suite Parameter = My Before Suite Parameter Testing for multiple input parameter = 100 and theitroad Testing for input parameter = hyman PASSED: multipleParameterTest(100, "theitroad") PASSED: singleParameterTest("hyman") =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 =============================================== After Suite Parameter = Default Parameter =============================================== Default suite Total tests run: 2, Failures: 0, Skips: 0 ===============================================
我们还可以通过org.testng.TestNG
类从命令行运行测试套件XML文件。
您所有的测试类和TestNG jar都应该在类路径中。
$java -cp .:../../lib/testng-6.14.3.jar:../../lib/jcommander-1.72.jar:../../lib/bsh-2.0b6.jar org.testng.TestNG test_parameters.xml