2014-09-10 113 views
1

如何使用TestNG框架處理腳本內部的腳本? 如何在每次運行測試腳本之前刪除數據庫? 如何在運行測試腳本之前將sql文件加載到乾淨的數據庫中?TestNG - WebDriver - Web應用程序測試 - 獨立測試

目標:每個測試用例必須是獨立的 框架: TestNG的 語言:的Java

每個測試用例必須獨立與其他測試用例。目標是隨機運行測試用例,不需要訂購。

以前我使用過PHPUnit框架,每個測試用例都是獨立的。

運行的每個測試腳本之前,我想:

  1. dropdatabase
  2. 創建一個新的數據庫
  3. 負載的SQL文件導入到數據庫的初始數據

我用這個裏面shell腳本,我會通過命令行調用shell腳本:

的mysql -u $ DB_USER -p $ DB_PWD -h $ HOST -e 「DROP DATABASE $ DB_NAME」

的mysql -u $ DB_USER -p $ DB_PWD -h $ -e 「CREATE DATABASE $ DB_NAME」 HOST

的mysql -u $ DB_USER -p $ DB_PWD -h $ HOST $ DB_NAME < SQL/dbinit.sql

谷歌-ING沒有樂於助人,所以我在這裏張貼問題。我需要TestNG這樣的東西,但我還沒有發現任何類似的東西。

有人可以給同伴QA提供建議嗎? 如何處理oracle數據庫,如何從數據庫中刪除數據並將它們加載到測試腳本中?

任何建議,書,教程將是非常有益的。

回答

1

你應該看看DbUnit。我最近開始自己使用它(我是TestNG用戶),而且,我還沒有遇到過你絕對需要JUnit本身的場景。您可以測試之間恢復你的數據庫,填充它,導出等..

http://dbunit.sourceforge.net/

基本的例子:

private DatabaseHelper dbh; 
private EntityManager em; 
private IDatabaseConnection connection; 
private IDataSet dataset; 

@BeforeClass 
private void setupDatabaseResource() throws Exception { 
    // using JPA and a custom helper class 
    em = dbh.getEntityManager(); 
    connection = new DatabaseConnection(((SessionImpl) (em.getDelegate())).connection()); 

    connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqldbDataTypeFactory()); 

    // full database export 
    IDataSet fullDataSet = connection.createDataSet(); 

    FlatXmlDataSet.write(fullDataSet, new FileOutputStream("target/generated-sources/test-dataset.xml")); 

    FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder(); 
    flatXmlDataSetBuilder.setColumnSensing(true); 

    // keep the dataset in memory, for later restore points 
    dataset = flatXmlDataSetBuilder.build(new FileInputStream("target/generated-sources/test-dataset.xml")); 
} 

編輯:其中@BeforeMethod恢復測試

之間數據庫的例子
@BeforeMethod 
public void cleanDB() throws Exception { 
    DatabaseOperation.CLEAN_INSERT.execute(connection, dataset); 
}