2015-08-02 5 views
0

Обычно рабочий процесс у меня есть выглядит следующим образом:Как должен быть записан единичный тест для преобразования данных?

  1. Выполнить SQL запрос на базу данных,
  2. нагрузки в память
  3. преобразование данных на основе логики foo()
  4. Вставьте преобразованные данные в таблицу в базы данных.

Как следует выполнить тестовое тестирование для такого рабочего процесса? Я действительно новичок в тестировании.

В любом случае, я использую Python 3.4.

ответ

0

В идеале, юнит-тесты не трогают базы данных. Базы данных медленны, и тесты, которые используют их, становятся взаимозависимыми, беспорядочными способами, которые не связаны с тестированием. Из ваших четырех шагов, то, что вы хотите выполнить unit-test, является # 3, foo(). foo() должен иметь вход (данные, которые будут загружены из базы данных, и и вывод (данные, которые будут записаны обратно в базу данных). Ваш тест должен создать вход, полностью в памяти, передать его foo (), и подтвердить, что результат того, что вы ожидаете Foo(), чтобы создать для этого входа.

что касается модульных тестов не прикасаясь к базе данных, пожалуйста, см Michael Feathers' definition of a unit test.

0

Один из способов протестировать этот рабочий процесс - это использовать специальную базу данных для тестирования. База данных испытаний отражает структуру вашей производственной базы данных, но в остальном она полностью пуста (т. Е. Нет данных в таблицах). Процедура затем следующий

  • Подключения к тестовой базе данных (и, и, возможно, загрузите его структуру)
  • Для каждого TestCase, выполните следующие действия:
    • Загрузите минимальный набор данных в базу данных необходимо проверить свою рутину
    • Запустите функцию, чтобы проверить и захватить его выход (если таковой имеется)
    • Выполните несколько тестов, чтобы убедиться, что ваша функция сделала то, что вы ожидали это делать.
    • Отбросьте все данные из базы данных до следующего теста проходит
  • После того как все тесты сделаны, отсоединиться от базы данных
Смежные вопросы