Вчера рассказывал о тестировании django приложений с помощью django-any, и о быстром развертывании continuous integration с jenkins и django-jenkins.
Несколько мешает закадровый смех и сумбурность изложения, но получилось лучше чем я ожидал.
You can watch this video on www.livejournal.com
Fork me om GitHub!
Comments 24
Reply
Reply
Reply
Вот, вдруг кому надо, прямая ссылка - http://vimeo.com/20396959
Reply
Слушай, есть несколько ламерский вопрос (но на который я никак не могу понять есть ли ответ) - вот для счетов, банкоматов и т.п. штуковин более-менее понятно как тесты делать, но как тестировать функционал более близкий к вебу, ведь это основная задача джанги, т.е. речь про urls.py, вьюшки и т.п. Selenium и т.п.? Правда для browser-based тестов, насколько я понимаю, покрытие фиг посчитаешь.
Reply
Для простых случаев (запрос-ответ) встроенный test client вполне подходит.
Для того чтобы протестировать open-id аутентификацию, или тот же django form wizard я использовал twill. Он легко интегрируется с django
Но сейчас говорят есть более продвинутый webtest и стоит его использовать вместо twill'a. Интеграция с django так же присутствуетЭто что касается python кода ( ... )
Reply
А покрытие разве можно достать из test_client/webtest?
Ну и для реальных сайтов много делаешь тестов на "запрос-ответы"?
Reply
>> для реальных сайтов много делаешь тестов на "запрос-ответы"
Стандартно я тестирую permission'ы на url'ах: два списка разрешенных и запрошенных url, и цикл с assert'ом. Ну и POST, там где достаточно логики чтобы имело смысл тестировать.
Reply
Reply
У меня сейчас простое wsgi приложение и nosetests к нему. В jenkins я это засунул и он показывает успешность билда и тестов. Но без красивых графиков coverage и lint... Из исходников django-jenkins я так и не понял что там происходит для их создания 7:
Reply
- Для pylint в опциях консольной утилиты - тип вывода parsable
Я вначале пробовал все это с django-nose, но nose больше проблем приносит в django тесты, чем помогает.
Reply
И, вроде, их там штуки четыре разных варианта...
Reply
И я так и не разобрался как возникало:
from django.contrib.auth.modls import User
User.objects.get(pk=1)
'NoneType' object has no attribute 'objects'
Reply
Leave a comment