2013-10-21 67 views
0

我正在創建一個Selenium Framework,它使用TestNG的POM結構。我正在使用@DataProvider註釋將值傳遞給@TestSelenium TestNG @DataProvider運行時間值

我的問題是,如果需要一個@Test方法的輸出,在稍後的@Test方法,我將那怎麼辦了用來因爲數據提供者,我可以只傳遞值,它包含的內容。

+0

pom框架?我認爲你的意思是maven :) – sircapsalot

+0

我個人在這個網站上回答了幾個問題,並提供了相同的回覆。不要讓你的測試依賴於對方。找出一種讓他們自給自足的方法。 – sircapsalot

+0

你好sircapsalot,它的POM只有不是Maven –

回答

-1

POM他的意思是他的WebElements的頁面對象模型的映射類型。

鬆散地耦合你的測試方法總是一個好習慣(因此一個@Test的結果不應該依賴於另一個@Test)。

如果你想達到它:@DataProvider可以用在任何你測試類中的@Test方法上。只需定義一個類級別的Map並在您的測試中使用它。

樣品:

TestingClass{ 

// define global variable 
Map<String,String> resultMap=new HashMap<String, String>(); 

@DataProvider 
public Object{ 

// some logic for dataProvider 
} 
@Test(dataProvider="dp") 
method1(){ 

// your logic 
// then put your final result to be used by method2 into appropriate obj    

resultMap.put("key","value");// assign result to defined global variable 

    } 

    @Test(dataProvider="dp") 
    method2(){ 

    // use the resultMap to take results from previous method. 

    } 


    } 
+0

OP沒有在每個@Test方法中使用dp之後;但全球第一種方法的結果。 –

0

OP沒有提到語言或需要並行執行,因此這可以容易地用一個靜態變量解決。在Java下面應該打印通過:

public static int outputOfMethodA=0; 

@Test 
    methodA(){ 
    outputOfMethodA=outputOfMethodA+1; 
} 

@Test 
methodB(){ 
    if(outputOfMethodA=1){ 
    System.out.println("pass!"); 
    } 
    else{system.out.println("fail!") 
    } 
}