【问题标题】:How to run the same code for multiple input files in TestNG framework?如何在 TestNG 框架中为多个输入文件运行相同的代码?
【发布时间】:2017-04-11 14:27:01
【问题描述】:

我的测试类有一些代码可以进行所需的验证。

测试类:

@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>

【问题讨论】:

    标签: java automated-tests testng testng-eclipse


    【解决方案1】:

    您不需要使用参数化测试重复代码,这就是它的发明目的:)

    在你的情况下正确的用法似乎是:

    @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/

    【讨论】:

    • Ps:我实际上并没有用 testng 尝试过,但根据 mkyong 它应该可以工作。我对junit做了同样的事情,所以这个概念很熟悉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    相关资源
    最近更新 更多