TestNG - WebDriver - Тестирование веб-приложений - Независимые тесты

1

Как обрабатывать БД внутри вашего скрипта с помощью платформы TestNG? Как удалить БД перед каждым запуском тестового скрипта? Как загрузить sql файл в чистую БД до запуска тестового скрипта?

Цель: каждый тестовый пример должен быть независимым. Рамка: TestNG Язык: Java

Каждый тестовый пример должен быть независимым от других тестовых случаев. Цель состоит в том, чтобы запускать тестовые случаи случайным образом, никаких заказов не требуется.

Раньше я использовал фреймворк PHPUnit, где каждый тестовый пример был независимым.

Перед запуском каждого тестового скрипта я бы:

  1. dropdatabase
  2. создать новую базу данных
  3. загрузить sql файл в базу данных с исходными данными

Я использовал это внутри сценария оболочки, и я бы назвал сценарий оболочки через командную строку:

mysql -u $ DB_USER -p $ DB_PWD -h $ HOST -e "DROP DATABASE $ DB_NAME"

mysql -u $ DB_USER -p $ DB_PWD -h $ HOST -e "CREATE DATABASE $ DB_NAME"

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

Google-ing не помог, поэтому я размещаю здесь вопрос. Мне понадобилось бы что-то подобное для TestNG, но я не нашел ничего подобного.

Может ли кто-нибудь дать совет коллеге. Как вы обрабатываете базу данных оракула, как вы удаляете данные из БД и загружаете их внутри своего тестового сценария?

Любые советы, книги, учебники были бы очень полезными.

Теги:
database
webdriver
testng

1 ответ

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"));
}

edit: пример, где @BeforeMethod восстанавливает вашу базу данных между тестами

@BeforeMethod
public void cleanDB() throws Exception {
    DatabaseOperation.CLEAN_INSERT.execute(connection, dataset);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню