На данный момент я бегу python manage.py test
каждый раз в то время как после внесения существенных изменений в проект django. Можно ли автоматически запускать эти тесты при каждом изменении и сохранении файла в моем проекте? Будет полезно обнаружить ошибки раньше (я знаю, что у рельсов есть что-то вроде этого с rspec). Я использую нос и джанго-нос. Заранее спасибо.Как автоматически запускать тесты при любых изменениях в моем проекте (Django)?
ответ
Вам понадобится сервер непрерывной интеграции, что-то вроде Jenkins.
Спасибо за ответ. Я обязательно буду проверять это, когда я использую Selenium. Пока что я просто делаю базовые тесты, используя «поддельный» сервер, поставляемый с Django. – user1011444
Дженкинс не имеет ничего общего с Селеном. Вы можете легко использовать его с обычными модульными тестами. –
Стоит упомянуть здесь проект ['django-jenkins'] (https://github.com/kmmbvnr/django-jenkins). –
Вы можете использовать Django Supervisor поверх Django. Это позволит избежать использования инструмента CI (который может быть полезен в любом случае, это не делает недействительным другой ответ - возможно, просто дополняет).
Я использовал watchr, что-то вроде Watchr
Я просто попытался nose-watch
, и она работала фантастически! установите плагин и запустите тест с помощью опции --with-watch
.
Update: :(это не кажется, работает хорошо при выполнении тестов из manage.py помощника Джанго нос в
В конце концов я решил использовать tdaemon, который поддерживает Джанго, хотя, возможно, потребуется немного. пустячный, а также для полноценных проектов
Например вот как я запустил его для моего проекта Джанго:.
tdaemon -t django --custom-args=a_specific_app_to_test -d --ignore-dirs logs
--custom-args
было сосредоточить тесты на с (так же, как вы бы сделали python manage.py test a_specific_app_to_test
Аргумент -d
должен включать ведение журнала отладки, в котором печатается, какое изменение файла вызвало запуск.
--ignore-dirs
был необходим, потому что мои тесты писали в журналы (что само по себе является проблемой!), А tdaemon
перешел в бесконечный цикл.
Я разработчик JavaScript, поэтому я использовал инструменты, которые разработчик JS создал с помощью Node.js для достижения той же цели в моих проектах. Это очень просто, но вам также нужно установить nodeJS, чтобы он работал.
Я создал файл с именем gruntfile.js в моем проекте корневой директории:
//gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
watch: {
files: ['*.py'],
tasks: ['shell']
},
shell: {
test: {
command: 'python main_test.py'
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-shell');
grunt.registerTask('default', ['watch']);
};
Что он делает в основном смотреть любой файл в этом каталоге, который имеет расширение р, и если они изменили его выполнить команду оболочки который в этом случае является моим тестом на python (вы можете изменить его, мое тестовое имя было main_test.py). Чтобы запустить этот скрипт grunt, вам нужно установить Node.js, после чего у вас будет npm в вашем глобальном пути. после этого вам нужно также заблокировать несколько модулей узлов. Все эти модули, кроме grunt-cli, будут сохранены в вашей текущей папке, поэтому убедитесь, что вы находитесь в корне вашего проекта или какой-либо папке, в которую вы помещаете этот файл gruntfile.js. Затем выполните команды.
npm install grunt-cli -g
npm install grunt
npm install grunt-contrib-watch
npm install grunt-shell
Не беспокойтесь о размере, это очень маленькие модули. Теперь, когда у вас есть все настройки, вы можете просто запустить grunt
, и он начнет просмотр ваших файлов py, и когда вы их сохраните, он запустит ваши тесты.Возможно, это не лучший способ запуска тестов на python, но, как я уже сказал, я разработчик JavaScript, и я думаю, что Grunt предоставил очень простой способ выполнения тестов даже для других языков, поэтому я использую его.
Я сделал это используя глоток. Установите глоток скорлупу:
npm install gulp-shell --save-dev
И в gulpfile.js:
var shell = require('gulp-shell')
gulp.task('run-tests', shell.task([
'python3 manage.py test']))
gulp.task('watch', function(){
gulp.watch(['./your-project-name/**/*.html', './your-project-name/**/*.py'], ['run-tests']);
});
gulp.task('default',['run-tests','watch']);
И прогоняют тесты в любое время есть изменения, сохраненные в любой .py или .html файлов!
Использование entr:
$ find . -name '*.py' | entr python ./manage.py test
Или, для дополнительного кредита, объединить его с ack:
$ ack --python | entr python ./manage.py test
Если вы хотите, чтобы даже найти новые файлы по мере их добавления:
$ until ack -f --python | entr -d python ./manage.py test; do sleep 1; done
py.test answ эр:
pip install pytest-xdist
py.test -f # will watch all subfolders for changes, and rerun the tests
Нос больше не поддерживается, а py.test - это просто намного лучше и больше pythonic в любом случае. –
Я хотел бы рекомендовать создание django-nose и sniffer. Его очень легко настроить и отлично работает. Что-то вроде линий this scent.py было единственной настройкой, в которой я нуждался. Затем вы можете просто запустить sniffer -x myapp.tests
.
Нос поставляется с некоторыми другими лакомствами, которые делают тесты более приятными для работы.
Другой Javascript dev здесь, я нашел nodemon
(https://github.com/remy/nodemon), чтобы работать очень хорошо. По умолчанию он смотрит файлы *.js
, но это настраивается с флагом --ext
. Для того, чтобы использовать его, сделайте следующее:
npm install -g nodemon
cd /your/project/dir/
nodemon --ext py --exec "python manage.py test"
Теперь, всякий раз, когда *.py
изменения файла, он будет повторно запустить команду. Он даже находит новые файлы.
Мне это нравится. Очень чистый. – Kazanz
- 1. Как автоматически запускать тесты при запуске Django-сервера?
- 2. Автоматически запускать определенные тесты при смене файла?
- 3. Уведомление в JavaFX при любых изменениях свойств
- 4. Qunit можно запускать тесты автоматически?
- 5. Динамический топор: предупреждение при любых изменениях записей
- 6. Лучший способ делегирования элемента при любых изменениях?
- 7. Выберите автоматическое обновление списка при любых изменениях?
- 8. mstest, как автоматически запускать все тесты?
- 9. Запретить Django запускать тесты Contrib?
- 10. Автоматически запускать тесты при развертывании с помощью capistrano
- 11. Автоматическая перезагрузка сельдерея на ЛЮБЫХ изменениях
- 12. Как включить уведомление о любых входящих изменениях в TFS?
- 13. Как НЕ пропускать тесты в моем тестовом проекте maven?
- 14. Может ли ReSharper автоматически запускать модульные тесты
- 15. Datagridview в приложении winforms обновляется автоматически при любых изменениях в базе данных
- 16. перезапускает службу Apache, необходимую при любых изменениях в файле rewritemap?
- 17. Модифицированная временная метка обновлена при любых изменениях в свойстве класса
- 18. Включение изменения состояния кнопки немедленно при любых изменениях в TextBox?
- 19. Тесты интеграции Pybuilder в проекте Django
- 20. Как я могу запускать модульные тесты django (через manage.py) быстрее
- 21. Получить уведомление о любых изменениях данных
- 22. connectedAndroidTest как запускать конкретные тесты
- 23. Автоматически запускать тесты с каждой сборки в Xcode 6
- 24. Как запустить тесты в моем проекте dnx50 против dnx451?
- 25. Как пройти тест на все тесты в моем проекте?
- 26. Отправить форму при любых изменениях ввода с помощью jQuery
- 27. nodejs, запускать тест автоматически при изменении файлов
- 28. Cucumber-JVM with Gradle, как автоматически запускать тесты
- 29. Как я могу автоматически запускать свои тесты после компиляции?
- 30. Уведомлять о любых изменениях в репозитории SVN только для чтения?
[Этот проект] (https://pypi.python.org/pypi/nosy) поможет вам, если вы хотите запустить тестовый набор на изменения кода, а не комментировать. – Matt
Спасибо за подсказку, это похоже на то, что мне нужно на данный момент. Не могли бы вы случайно узнать, можно ли добавить носа в django-нос (например, как плагин: [короткое объяснение по поводу джанго-носа] (https://github.com/jbalogh/django-nose#custom-plugins))? – user1011444
Возможный дубликат [Есть ли что-то вроде «autotest» для Python unittests?] (Http://stackoverflow.com/questions/108892/is-there-something-like-autotest-for-python-unittests) – mlt