使用不同的参数testng顺序执行多个测试

时间:2014-08-30 10:06:21

标签: selenium-webdriver testng

我试图使用数据提供程序依次使用不同参数运行多个测试,基本上情况是假设有5个测试完成测试流程并且所有测试用例应按顺序运行假设在数据提供程序中返回的第一个参数是“air”然后所有5个测试应该使用参数“air”和第二个参数运行,依此类推。

目前在数据提供者中,如果假设参数是“空气”,“地球”,那么首先用两个参数执行测试,然后继续进行下一次测试。

所以我担心的是所有的测试应该首先使用第一个参数air运行,然后所有的测试应该使用下一个参数“earth”执行。

3 个答案:

答案 0 :(得分:1)

  

所以我担心的是所有的测试应首先使用第一个参数空气运行,然后所有测试应该使用下一个参数"地球"

执行

这是我输入的输出" air"和"地球"

Test-1 with data: Air
Test-2 with data: Air
Test-1 with data: Water
Test-2 with data: Water

测试类 - RandomTest

public class RandomTest {
    private String str = "";

    public RandomTest(String str) {
    this.str = str;
    }

    @Test
    public void firstTest() {
    System.out.println("Test-1 with data: "+str);
    }

    @Test
    public void secondTest() {
    System.out.println("Test-2 with data: "+str);
}}

工厂类 - SampleFactory

public class SampleFactory {
@Factory(dataProvider="dp")
public Object[] createInstances(String str) {
    return new Object[] {new RandomTest(str)};
}

@DataProvider(name="dp")
public static Object[][] createData() {
    return new Object[][] {
            new Object[] { new String("Air") },
            new Object[] { new String("Water") }
    };
}}

从testng.xml运行类SampleFactory, 请注意:逐个实例=" true"

<suite name="Suite-A" verbose="1">
<test name="test" group-by-instances="true">
    <classes>
        <class name="tests.SampleFactory"></class>
    </classes>
</test>
</suite>

参考:http://testng.org/doc/documentation-main.html#factories
参考:http://java.dzone.com/articles/testng-run-tests-sequentially

答案 1 :(得分:0)

您可以使用nose-ittr,它是支持参数化测试的鼻子扩展。

示例:

@ittr(number=[1, 2, 3, 4])  
def test_even(self):
    assert_equal(self.number % 2, 0)

答案 2 :(得分:0)

您可以在不更改代码的情况下更改参数,仅更改testng.xml文件。

您的Java类:

 import org.testng.annotations.Parameters;
 import org.testng.annotations.Test;

 public class ParameterizedTest1 {
    @Test
    @Parameters("myName")
    public void parameterTest(String myName) {
       System.out.println("Parameterized value is : " + myName);
    }
 }

的testng.xml:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

 <suite name="Suite1">
  <test name="test1">
    <parameter name="myName" value="manisha"/> 
    <classes>
       <class name="ParameterizedTest1" />
    </classes>
  </test>
 </suite>

http://www.tutorialspoint.com/testng/testng_parameterized_test.htm