2017-02-14 40 views
-1

我們使用硒和FitNesse的用於UI測試,我們打開Firefox和執行所有的用戶界面相關的操作 - 點擊,填寫領域,按下按鈕等如何繞過Fitnesse SetUp/TearDown進行單項測試?

由於我們目前的測試框架的一部分,FitnesseRoot有設置/ TearDown定義,打開/銷燬瀏覽器實例。所有套件和測試(大約300個)使用SetUp/TearDown作爲UI測試的一部分。

我想用新的燈具代替我們的簡單測試之一進行API測試,因爲API測試比UI測試要快得多。測試本身工作正常,但問題在於即使我的​​REST裝置不需要瀏覽器實例,SetUp會打開它並且TearDown嘗試關閉它,但會返回一個異常(因爲執行中的測試指向API驅動程序類,而TearDown中的方法屬於UI Driver類)。

如上所述,我無法刪除SetUp/TearDown,因爲它對300個測試用例有影響。有什麼辦法可以阻止一個特定的測試使用SetUp/TearDown?或者將TearDown指向UI驅動程序類,以便測試不會引發異常?

SetUp

|import   | 
|com.myapplication.fitnesse.ui| 
|com.myapplication.util.restclient.fixtures| 

!define slim.flags {-s 200} 

!|script |                       
|start| my UI driver class|${SERVER}|${PORT}|FIREFOX|${PAGE_PATH}.${PAGE_NAME}|${PROXYSERVER}| 
|debug mode   |false |  

實際測試:

!define TEST_SYSTEM {slim} 
| script | my API driver class | server ip:port | username | password| 
| login | 
| do something...| 

TearDown

|script    | 
|logout    | 
|destroyDriver  | 

回答

0

感謝您的答覆,但而不是分佈在不同的套件測試中,我用下面的切換驅動程序:

的SetUp => |腳本| | start |我的UI驅動類| $ {SERVER} | $ {PORT} | FIREFOX | $ {PAGE_PATH}。$ {PAGE_NAME} | $ {PROXYSERVER} | |調試模式| false | | $ my_UI_DRIVER = | get fixture |

Actual Test => !define TEST_SYSTEM {slim} |腳本|我的API驅動類|服務器IP:端口|用戶名|密碼| |登錄| |做一點事...|

TearDown => | script | $ my_UI_DRIVER | |註銷| | destroyDriver |

SetUp按照UI驅動程序類中提到的方式打開瀏覽器。我的Fitnesse測試指向API驅動程序類並執行我的測試。 TearDown指向UI驅動程序類並關閉瀏覽器。因此,我的測試工作正常,沒有任何錯誤/例外。這樣我就可以在一個測試中將API和UI結合起來。

1

我傾向於做的是組織我的測試分爲套房:前端和後端例如一個。前端設備啓動硒,後端設備無法啓動。所以這個設置不在根層,但是(至少)一個。

其實我傾向於在S​​uiteSetUp中啓動硒而不是在安裝程序中,並在測試之間重新使用驅動程序。我發現這可以加快測試的速度。然後在SuiteTearDown中關閉驅動程序。 嵌套套件可以通過定義它們自己來覆蓋父級的SuiteSetUp(和SuiteTearDown)。

我希望這也適用於您的情況。爲API測試定義一個(或多個)獨立套件,併爲這些套件設置和拆卸而不使用硒。我還沒有嘗試過,但我希望父母的設置和拆卸在這種情況下被忽略。