如何运行 TestNG框架中多个输入文件的相同代码?
How to run the same code for multiple input files in TestNG framework?
我的测试 class 有一些代码可以进行所需的验证。
测试Class:
@Parameters({ "InputFile01"})
@Test
public void testCase01(String InputFile01) {
//Code xyz
}
@Parameters({ "InputFile02"})
@Test
public void testCase01(String InputFile02) {
//Code xyz (Same code as above)
}
我必须多次将上面的代码复制到 运行 它用于不同的输入文件,我该如何处理这个
我是运行宁测试服来自xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Regression">
<test name="PI01_Sprint1_ID12345">
<classes>
<class name="org.PI01.PI01_Sprint1_ID12345">
<methods>
<parameter name="InputFile01" value="PI01\TC01.xml" />
<include name="testCase01" />
<parameter name="InputFile02" value="PI01\TC02.xml" />
<include name="testCase02" />
</methods>
</class>
</classes>
</test>
</suite>
你不需要用参数化测试重复代码,这就是它的发明目的:)
您的情况下正确的用法似乎是:
@Parameters({ "filename"})
@Test
public void testCase01(String filename) {
//openFile(filename)
//do something
}
并在配置调用测试中使用此参数的不同值:
<test name="test file1">
<parameter name="filename" value="file1.txt" />
...
</test>
<test name="test file2">
<parameter name="filename" value="file2.txt" />
...
</test>
您似乎可以使用 DataProviders 提供一组参数:
public class TestParameterDataProvider {
@Test(dataProvider = "provideFilenames")
public void test(String filename) {
//openFile(filename)
//assert stuff...
}
@DataProvider(name = "provideFilenames")
public String[] provideData() {
return new String[] {
"filename1", "filename2", "filename3"
};
}
}
更多:https://www.tutorialspoint.com/testng/testng_parameterized_test.htm
https://www.mkyong.com/unittest/testng-tutorial-6-parameterized-test/
我的测试 class 有一些代码可以进行所需的验证。
测试Class:
@Parameters({ "InputFile01"})
@Test
public void testCase01(String InputFile01) {
//Code xyz
}
@Parameters({ "InputFile02"})
@Test
public void testCase01(String InputFile02) {
//Code xyz (Same code as above)
}
我必须多次将上面的代码复制到 运行 它用于不同的输入文件,我该如何处理这个
我是运行宁测试服来自xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Regression">
<test name="PI01_Sprint1_ID12345">
<classes>
<class name="org.PI01.PI01_Sprint1_ID12345">
<methods>
<parameter name="InputFile01" value="PI01\TC01.xml" />
<include name="testCase01" />
<parameter name="InputFile02" value="PI01\TC02.xml" />
<include name="testCase02" />
</methods>
</class>
</classes>
</test>
</suite>
你不需要用参数化测试重复代码,这就是它的发明目的:)
您的情况下正确的用法似乎是:
@Parameters({ "filename"})
@Test
public void testCase01(String filename) {
//openFile(filename)
//do something
}
并在配置调用测试中使用此参数的不同值:
<test name="test file1">
<parameter name="filename" value="file1.txt" />
...
</test>
<test name="test file2">
<parameter name="filename" value="file2.txt" />
...
</test>
您似乎可以使用 DataProviders 提供一组参数:
public class TestParameterDataProvider {
@Test(dataProvider = "provideFilenames")
public void test(String filename) {
//openFile(filename)
//assert stuff...
}
@DataProvider(name = "provideFilenames")
public String[] provideData() {
return new String[] {
"filename1", "filename2", "filename3"
};
}
}
更多:https://www.tutorialspoint.com/testng/testng_parameterized_test.htm
https://www.mkyong.com/unittest/testng-tutorial-6-parameterized-test/