Выполнение тестов с покрытием с использованием django-jenkins
У меня есть пара проектов Django, над которыми я работаю, и я использую Jenkins для целей непрерывной интеграции. Я уже какое-то время работал над этим, и он работает хорошо.
Я хотел бы иметь возможность генерировать автоматические отчеты о покрытии тестов, и Дженкинс также обрабатывать их. Мне показалось, что django-jenkins был подходом для этого, поэтому я установил его и coverage
,
Вот соответствующие разделы моего settings.py
:
# Jenkins integration
INSTALLED_APPS += ('django_jenkins',)
JENKINS_TASKS = (
'django_jenkins.tasks.with_coverage',
'django_jenkins.tasks.run_pylint',
'django_jenkins.tasks.django_tests',
)
PROJECT_APPS = ['myapp']
Теперь я могу бежать python manage.py jtest
и работает как положено. Тем не менее, если я бегу python manage.py jenkins
, это ошибки:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 76, in load_command_class
return module.Command()
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django_jenkins/management/commands/__init__.py", line 61, in __init__
for module_name in self.get_task_list()]
File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
__import__(name)
ImportError: No module named django_tests
Я использую стандарт Django TestCase
а также LiveServerTestCase
классы как основа моих тестов. Есть идеи, где я иду не так? Документация, кажется, подразумевает django_tests
был удален, но я не могу найти никаких указаний относительно того, как вы сейчас выполняете тесты Django.
Я использую Django 1.6.2.
2 ответа
Просто понял, что я был немного наглым. Все, что мне нужно было сделать, это бросить django_tests
линия, как это:
# Jenkins integration
INSTALLED_APPS += ('django_jenkins',)
JENKINS_TASKS = (
'django_jenkins.tasks.with_coverage',
'django_jenkins.tasks.run_pylint',
)
PROJECT_APPS = ['myapp']
А также django-jenkins
будет запускать тесты без явного запроса на это.
В последней версии django_jenkins (0.18.0) внесены изменения, так что задача Jenkins django_jenkins.tasks.with_coverage также больше не нужна.
Вместо этого вы выполняете тестовый прогон следующим образом:
python manage.py jenkins --enable-coverage
или же
python3 manage.py jenkins --enable-coverage
Вы можете узнать больше о GitHub Repo проекта.