Django-jenkins --enable-охват возвращает объект "Покрытие" без атрибута "данные"

Я использую django-jenkins v0.110.0 и покрытие v5.2.1 с Django v3.1. Как уже упоминалось в теме, когда я бегал:

python manage.py jenkins --enable-coverage

Я получаю такую ​​ошибку:

AttributeError: объект "Покрытие" не имеет атрибута "данные"

Ниже приведена полная трассировка стека:

Traceback (most recent call last):
  File "manage.py", line 16, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.8/site-packages/django_jenkins/management/commands/jenkins.py", line 47, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
    super().run_from_argv(argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.8/site-packages/django_jenkins/management/commands/jenkins.py", line 116, in handle
    coverage.save(tested_locations, options)
  File "/usr/local/lib/python3.8/site-packages/django_jenkins/tasks/with_coverage.py", line 29, in save
    self.coverage.stop()
  File "/usr/local/lib/python3.8/site-packages/django_jenkins/tasks/with_coverage.py", line 55, in get_morfs
    return [filename for filename in coverage.data.measured_files()
AttributeError: 'Coverage' object has no attribute 'data'

Методы тестирования в tests.py были запущены правильно, а файл junit.xml был создан в каталоге отчетов. Но отчетов о покрытии точно нет из-за этой ошибки. Я что-то упустил? Должен ли я указать файл конфигурации покрытия (extension.rc), чтобы он работал? Он несовместим с python3.8? Другие вопросы?

Любые идеи приветствуются. Заранее спасибо!

2 ответа

Решение

У вас проблема с зависимостью. Последний выпуск django-jenkins был в сентябре 2016 года. django v3 был выпущен в сентябре 2019 года. Вам нужно будет понизить версию django до выпуска того периода времени.

Я настоятельно рекомендую вам не решать эту проблему, а выбрать другое решение, кроме django-jenkins.

Лично я использую tox поэтому я могу развернуть свое тестирование и инструменты на любом инструменте ci/cd в сочетании с вызовом coverage/ pytest и любые инструменты (black, mypy, safety, flake8и т. д.) напрямую. Библиотеки-оболочки, такие как django-jenkins, просто слишком ненадежны или делают функции недоступными из-за упаковки. Если вам нужен продвинутый старт, возьмите мой tox.ini.

Удачи.

Это поздно, но на случай, если кто-то еще столкнется с этой проблемой при использовании django-jenkins и покрытия. Мне удалось заставить его снова работать, используя покрытие ==4.3.4. Я сделал это, потому что из django-jenkins github я увидел, что они используют эту версию покрытия.

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