2014-08-30 98 views
1

我試圖運行具有不同參數的多個測試順序使用數據提供者,基本的情況是假設有5個測試完成一個測試流和所有測試用例應在序列運行中的數據假設回到提供商第一個參數是「空氣」,那麼所有5個測試應與參數「氣」跑,然後第二個參數等等。執行多個測試依次用不同的參數TestNG的

目前在dataProvider中發生的事情是,如果supposingly參數是「空氣」,「大地」,那麼第一次測試與兩個參數執行,然後移動到下一個測試。

所以我擔心的是,所有的測試應與第一個參數空氣首先運行,然後再所有測試應與下一個參數「地」執行。

回答

1

所以我擔心的是,所有的測試應與第一個參數空氣首先運行,然後再所有測試應與下一個參數「土」執行

這裏是我得到的輸出輸入 「空氣」 和 「大地」

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, 請注意:組按實例= 「真」

<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

+0

感謝那些真正幫助望着窗外的確切的事情:) – 2014-08-31 14:45:39

0

您可以使用nose-ittr,其用於支持參數化測試的鼻子延伸。

例如:

@ittr(number=[1, 2, 3, 4]) 
def test_even(self): 
    assert_equal(self.number % 2, 0) 
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

相關問題