Выполнение тестов с покрытием с использованием 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 проекта.

Другие вопросы по тегам