Подтвердить что ты не робот

Лучшие практики для получения максимального покрытия тестирования с помощью Django/Python?

Мои тесты серьезно отсутствуют, и у меня нет большой веры в них. Каковы некоторые из лучших практик для получения большинства покрытий для тестирования, которые я могу использовать Django/Python? Я смотрю Freshen и Lettuce, которые выглядят довольно многообещающими, но Я не могу использовать их для всего, не так ли? Я ищу советы о том, как структурировать свой рабочий процесс/проект с помощью тестирования, чтобы я мог чувствовать себя уверенно при развертывании нового кода в рабочей среде.

4b9b3361

Ответ 1

Кроме того, в этой серии статей есть полезный совет по тестированию приложений django:

http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/

Моя единственная критика ответа заключалась в том, чтобы не хранить все в файле tests.py, но делать, как предлагает статья. Создайте каталог tests и включите его в модуль, добавив файл __init__.py и импортируйте все ваши тестовые примеры. например, from myapp.tests.views import *. Но определенно здравый совет. Надо идти, прежде чем вы сможете бежать... tests! Посмотрите, что я там сделал?

Ответ 2

  • Остановить кодирование.

  • Напишите тесты для того, что должно делать ваше приложение.

Во-первых, используйте встроенное тестирование Django. Записывайте модельные тесты как классы TestCase внутри своих моделей .py.

Сделайте это сейчас. Прежде чем читать дальше. Добавьте классы django.test.TestCase прямо сейчас, чтобы создавать, изменять и извлекать объекты модели. Убедитесь, что у вас есть метод тестирования для каждого свойства, атрибута или дополнительного метода, который вы определили.

Я подожду, пока вы не закончите это.


Тестирование модели завершено? Хорошо.

Теперь создайте файл tests.py в каждом приложении. Каждый из. Все пустое.

В каждом файле test.py создайте классы django.test.TestCase для каждой формы.

Сделайте это сейчас. Создавайте хорошие и плохие формы. Создавайте формы с каждой отдельной задачей проверки поля.

Не создавайте все возможные перестановки плохих данных. Только один тестовый пример для каждого отдельного правила проверки.

Сделайте это сейчас. Прежде чем читать дальше. Добавьте django.test.TestCase классы в test.py для каждой формы.

Я подожду, пока вы не закончите это.


Теперь вам нужно проверить каждую функцию просмотра. Они также входят в файл tests.py. Каждая функция просмотра имеет как минимум два тестовых примера, возможно, больше, в зависимости от различных декораторов, которые вы используете.

Если для функции просмотра требуется логин, у вас есть два случая: вход в систему и не вход в систему.

Если для функции просмотра требуется разрешение, у вас есть как минимум три случая: не вошел в систему, вошел в систему как неправильный пользователь, вошел в систему как правильный пользователь.

На данный момент вам просто нужно быть уверенным, что функция просмотра сделала что-то и вернула правильный HTML-шаблон с любыми точными данными. Не сойди с ума. Вы просто хотите убедиться, что все функции просмотра фактически возвращают ожидаемую страницу. Ничего больше.

Сделайте это сейчас. Прежде чем читать дальше. Добавьте django.test.TestCase классы в test.py для каждой функции просмотра.

Я подожду, пока вы не закончите это.


Это те тесты, которые вы должны написать сначала, прежде чем писать код приложения.

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

Как только вы закончите, вы можете начать рассматривать модульные тесты, которые отражают реальную цель и ценность вашего приложения.

Ответ 3

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

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

После установки вы можете сделать что-то вроде этого:

$ coverage run manage.py test *yourapp*

Он создаст для вас файл .coverage. Вы можете отформатировать данные из этого файла с помощью

$ coverage report

чтобы получить полный список по охвату тестирования (включая код из других библиотек python). Вы можете легко coverage report --omit path модули, которые начинаются с определенных путей. Кроме того, вы сможете увидеть строки, которые не были выполнены во время тестового прогона с опцией -m.

Кроме того, я думаю, что есть приложение django_coverage Django, которое интегрирует coverage в тестирование для проекта Django. Это дает вам приятные отчеты по охвату HTML.

Теперь есть другие инструменты, такие как twill и т.д. для решения конкретных задач (например, тестирование javascript).

Кроме того, если вы хотите пройти детальные шаги по настройке ванильного тестирования в Django, вы можете прочитать "Django 1.1 Testing and Debugging" (поиск на Amazon).