2014-09-04 2 views
2

У меня есть проект Django, который уже имеет некоторые модульные тесты, используя стандартную среду тестирования Django. Это хорошо работает. Теперь я хочу, чтобы настроить интеграционные тесты с Travis CI, но я бил несколько блокаторов:Тест Django: тесты отдельных модулей и интеграции на Travis CI

  1. Django документы не говорят, как отделить автономные ./manage.py test модульные тесты от интеграционных тестов, которые требуют внешних служб для установки. Я хочу только запустить модульные тесты на моей машине dev и Travis CI для запуска тестов на единицу и интеграции. Как их отделить?
  2. У меня есть база данных на Travis CI, заполненная некоторыми исходными данными, заполненными во время настройки. Я хочу, чтобы тесты интеграции выполнялись с этим, но модульные тесты продолжали использовать временную тестовую базу данных. Как мне это сделать?

ответ

1

1- Вы можете выполнить любой тест, который вы хотите, из команды управления manage.py. Таким образом, вы можете создать файл unit_test.py и запустить только те тесты внутри этого файла.

manage.py test --help 

2- Вы не хотите этого делать. Пробег по сравнению с производственной/полупроизводственной базой данных - это позор. Вам нужно создать приборы для каждого теста и выполнить тесты против временной базы данных. Если Вы действительно хотите узнать ответ, он уже ответил (а) here

+1

При написании модульных тестов вы действительно не должны тестировать производственную базу данных. Но при выполнении интеграционных тестов (как в Travis CI) ваша производственная база - это ваша тестовая база данных. Когда вы тестируете интеграцию с внешними инструментами, которые могут также изменять/взаимодействовать с базой данных, вы хотите использовать базу данных «production». –

Смежные вопросы