我正在創建一個Selenium Framework,它使用TestNG的POM結構。我正在使用@DataProvider
註釋將值傳遞給@Test
。Selenium TestNG @DataProvider運行時間值
我的問題是,如果需要一個@Test
方法的輸出,在稍後的@Test
方法,我將那怎麼辦了用來因爲數據提供者,我可以只傳遞值,它包含的內容。
我正在創建一個Selenium Framework,它使用TestNG的POM結構。我正在使用@DataProvider
註釋將值傳遞給@Test
。Selenium TestNG @DataProvider運行時間值
我的問題是,如果需要一個@Test
方法的輸出,在稍後的@Test
方法,我將那怎麼辦了用來因爲數據提供者,我可以只傳遞值,它包含的內容。
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.
}
}
OP沒有在每個@Test方法中使用dp之後;但全球第一種方法的結果。 –
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!")
}
}
pom框架?我認爲你的意思是maven :) – sircapsalot
我個人在這個網站上回答了幾個問題,並提供了相同的回覆。不要讓你的測試依賴於對方。找出一種讓他們自給自足的方法。 – sircapsalot
你好sircapsalot,它的POM只有不是Maven –